#! /usr/bin/env python import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt import csv from itertools import izip #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('LOCPOT.slab') vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. grad_x,grad_y,grad_z = np.gradient(grid_pot[:,:,:],resolution_x,resolution_y,resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want.
import csv from itertools import izip potential_file = 'LOCPOT' # The file with VASP output for potential coordinate_file = 'POSCAR' # The coordinates file NOTE NOTE This must be in vasp 4 format species = "O" # The species whose on-site potential you are interested in sample_cube = [ 5, 5, 5 ] # The size of the sampling cube in units of mesh points (NGX/Y/Z) # Nothing below here should require changing #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(potential_file) vector_a, vector_b, vector_c, av, bv, cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a / NGX resolution_y = vector_b / NGY resolution_z = vector_c / NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot, NGX, NGY, NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. grad_x, grad_y, grad_z = np.gradient(grid_pot[:, :, :], resolution_x, resolution_y, resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Getting the potentials for a group of atoms, in this case the Os ## NOTE THIS REQUIRES ASE to be available https://wiki.fysik.dtu.dk/ase/index.html ##------------------------------------------------------------------
import numpy as np import matplotlib.pyplot as plt ## Input section (define the plane with 3 points, fractional coordinates) a_point = [0, 0, 0] b_point = [1, 0, 1] c_point = [0, 1, 0] input_file = 'LOCPOT.slab' #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(input_file) vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. grad_x,grad_y,grad_z = np.gradient(grid_pot[:,:,:],resolution_x,resolution_y,resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want.
#! /usr/bin/env python import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt import csv from itertools import izip #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('LOCPOT.slab') vector_a, vector_b, vector_c, av, bv, cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a / NGX resolution_y = vector_b / NGY resolution_z = vector_c / NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot, NGX, NGY, NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. grad_x, grad_y, grad_z = np.gradient(grid_pot[:, :, :], resolution_x, resolution_y, resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want. ##------------------------------------------------------------------ ## Input section (define the plane with 3 points) #a_point = [0, 0, 0]
# This section should not be altered #------------------------------------------------------------------ #vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(input_file) #vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) #resolution_x = vector_a/NGX #resolution_y = vector_b/NGY #resolution_z = vector_c/NGZ #grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) potential, atoms = ase.io.cube.read_cube(input_file, read_data=True) vector_a = np.linalg.norm(atoms.cell[1]) vector_b = np.linalg.norm(atoms.cell[1]) vector_c = np.linalg.norm(atoms.cell[2]) NGX = len(potential) NGY = len(potential[0]) NGZ = len(potential[0][0]) resolution_x = vector_a / NGX resolution_y = vector_b / NGY resolution_z = vector_c / NGZ print NGX, NGY, NGZ #------------------------------------------------------------------ ## POTENTIAL planar = pot.planar_average(potential, NGX, NGY, NGZ) ## MACROSCOPIC AVERAGE macro = pot.macroscopic_average(planar, lattice_vector, resolution_z) plt.plot(planar) plt.plot(macro) plt.savefig('Planar.eps') #plt.show() np.savetxt(output_file, planar) ##------------------------------------------------------------------
#! /usr/bin/env python import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt import csv from itertools import izip #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('LOCPOT.slab') vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. #grad_x,grad_y,grad_z = np.gradient(grid_pot[:,:,:],resolution_x,resolution_y,resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want.
import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt #------------------------------------------------------------------ # READING # Get the two potentials and change them to a planar average. # This section should not be altered #------------------------------------------------------------------ # SLAB vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('CHGCAR.Slab') mag_a,mag_b,mag_c,vec_a,vec_b,vec_c = pot.matrix_2_abc(Lattice) resolution_x = mag_a/NGX resolution_y = mag_b/NGY resolution_z = mag_c/NGZ Volume = pot.get_volume(vec_a,vec_b,vec_c) grid_pot_slab, electrons_slab = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ,True,Volume) # Save the lattce vectors for use later Vector_A = [vec_a,vec_b,vec_c] #---------------------------------------------------------------------------------- # CONVERT TO PLANAR DENSITIES #---------------------------------------------------------------------------------- planar_slab = pot.planar_average(grid_pot_slab,NGX,NGY,NGZ) # BULK vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('CHGCAR.Bulk') mag_a,mag_b,mag_c,vec_a,vec_b,vec_c = pot.matrix_2_abc(Lattice)
#! /usr/bin/env python import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt import csv from itertools import izip #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('LOCPOT.slab') vector_a, vector_b, vector_c, av, bv, cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a / NGX resolution_y = vector_b / NGY resolution_z = vector_c / NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot, NGX, NGY, NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. #grad_x,grad_y,grad_z = np.gradient(grid_pot[:,:,:],resolution_x,resolution_y,resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want. ##------------------------------------------------------------------ ## Input section (define the plane with 3 points) #a_point = [0, 0, 0] #b_point = [1, 0, 1]
import matplotlib.pyplot as plt import csv from itertools import izip potential_file = 'LOCPOT' # The file with VASP output for potential coordinate_file = 'POSCAR' # The coordinates file NOTE NOTE This must be in vasp 4 format species = "O" # The species whose on-site potential you are interested in sample_cube = [5,5,5] # The size of the sampling cube in units of mesh points (NGX/Y/Z) # Nothing below here should require changing #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(potential_file) vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. grad_x,grad_y,grad_z = np.gradient(grid_pot[:,:,:],resolution_x,resolution_y,resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Getting the potentials for a group of atoms, in this case the Os ## NOTE THIS REQUIRES ASE to be available https://wiki.fysik.dtu.dk/ase/index.html ##------------------------------------------------------------------ ##------------------------------------------------------------------
import math import numpy as np import matplotlib.pyplot as plt ## Input section (define the plane with 3 points, fractional coordinates) a_point = [0, 0, 0] b_point = [1, 0, 1] c_point = [0, 1, 0] input_file = 'LOCPOT.slab' #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(input_file) vector_a, vector_b, vector_c, av, bv, cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a / NGX resolution_y = vector_b / NGY resolution_z = vector_c / NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot, NGX, NGY, NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. grad_x, grad_y, grad_z = np.gradient(grid_pot[:, :, :], resolution_x, resolution_y, resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want.
#! /usr/bin/env python import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt input_file = 'LOCPOT' lattice_vector = 4.75 output_file = 'planar.dat' # No need to alter anything after here #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(input_file) vector_a, vector_b, vector_c, av, bv, cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a / NGX resolution_y = vector_b / NGY resolution_z = vector_c / NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot, NGX, NGY, NGZ) #------------------------------------------------------------------ ## POTENTIAL planar = pot.planar_average(grid_pot, NGX, NGY, NGZ) ## MACROSCOPIC AVERAGE macro = pot.macroscopic_average(planar, lattice_vector, resolution_z) plt.plot(planar) plt.plot(macro) plt.savefig('Planar.eps') plt.show() np.savetxt(output_file, planar) ##------------------------------------------------------------------
#! /usr/bin/env python import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt input_file = 'LOCPOT' lattice_vector = 4.75 output_file = 'planar.dat' # No need to alter anything after here #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(input_file) vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) #------------------------------------------------------------------ ## POTENTIAL planar = pot.planar_average(grid_pot,NGX,NGY,NGZ) ## MACROSCOPIC AVERAGE macro = pot.macroscopic_average(planar,lattice_vector,resolution_z) plt.plot(planar) plt.plot(macro) plt.savefig('Planar.eps') plt.show() np.savetxt(output_file,planar) ##------------------------------------------------------------------
# This section should not be altered #------------------------------------------------------------------ #vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density(input_file) #vector_a,vector_b,vector_c,av,bv,cv = pot.matrix_2_abc(Lattice) #resolution_x = vector_a/NGX #resolution_y = vector_b/NGY #resolution_z = vector_c/NGZ #grid_pot, electrons = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) potential, atoms = ase.io.cube.read_cube(input_file,read_data=True) vector_a = np.linalg.norm(atoms.cell[1]) vector_b = np.linalg.norm(atoms.cell[1]) vector_c = np.linalg.norm(atoms.cell[2]) NGX = len(potential) NGY = len(potential[0]) NGZ = len(potential[0][0]) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ print NGX,NGY,NGZ #------------------------------------------------------------------ ## POTENTIAL planar = pot.planar_average(potential,NGX,NGY,NGZ) ## MACROSCOPIC AVERAGE macro = pot.macroscopic_average(planar,lattice_vector,resolution_z) plt.plot(planar) plt.plot(macro) plt.savefig('Planar.eps') #plt.show() np.savetxt(output_file,planar) ##------------------------------------------------------------------
import NewPotentialModule as pot import math import numpy as np import matplotlib.pyplot as plt #------------------------------------------------------------------ # Get the potential # This section should not be altered #------------------------------------------------------------------ vasp_pot, NGX, NGY, NGZ, Lattice = pot.read_vasp_density('LOCPOT') vector_a,vector_b,vector_c = pot.matrix_2_abc(Lattice) resolution_x = vector_a/NGX resolution_y = vector_b/NGY resolution_z = vector_c/NGZ grid_pot = pot.density_2_grid(vasp_pot,NGX,NGY,NGZ) ## Get the gradiens (Field), if required. ## Comment out if not required, due to compuational expense. #grad_x,grad_y,grad_z = np.gradient(grid_pot[:,:,:],resolution_x,resolution_y,resolution_z) #------------------------------------------------------------------ ##------------------------------------------------------------------ ## Get the equation for the plane ## This is the section for plotting on a user defined plane; ## uncomment commands if this is the option that you want. ##------------------------------------------------------------------