Version2/MainVR2.ps1
$timer = [Diagnostics.Stopwatch]::StartNew() #Stopwatch #$InputFile="./vasprun.xml" #This variable is supplied via function. #$SkipK,$MaxFilled, $MaxEmpty are provided from calling function Export-VR2 $XmlObject = (Read-AsXml -VasprunFile $InputFile) $loadtime = $timer.Elapsed.TotalSeconds Write-Host "$([Math]::Round($($loadtime),3)) seconds elapsed while loading vasprun.xml($([Math]::Round(((Get-Item $InputFile).length/1MB),3)) MB)" -ForegroundColor Cyan $timer.Stop(); $weights = Get-FillingWeights -XmlObject $XmlObject $info = Get-Summary -XmlObject $XmlObject $sys = $info.SYSTEM; $NION = $info.NION; $NBANDS = $info.NBANDS; $NKPTS = $info.NKPTS; $filled = $weights.Filled; Write-Host "▲ " -ForegroundColor Red -NoNewline Write-Host " SYSTEM: $sys, NIONS: $NION, NBANDS: $NBANDS, Filled: $filled, NKPTS: $($NKPTS-$ibzkpt) " -ForegroundColor White -BackgroundColor Red # Select Bands range. $skipB, $NBANDS = @(0, $info.NBANDS); # Collect all bands if NFilled and NEmpty not given if (-1 -ne $MaxFilled -and -1 -eq $MaxEmpty) { #check if only NFilled given. [int]$skipB, [int]$NBANDS = $(Get-SkipSelectBands -XmlObject $XmlObject -MaxFilled $MaxFilled); #update indices of bands. } elseif (-1 -ne $MaxEmpty -and -1 -eq $MaxFilled) { #check if only NEmpty given. [int]$skipB, [int]$NBANDS = $(Get-SkipSelectBands -XmlObject $XmlObject -MaxEmpty $MaxEmpty); #update indices of bands. } elseif (-1 -ne $MaxEmpty -and -1 -ne $MaxFilled) { #check if NFilled and NEmpty given. [int]$skipB, [int]$NBANDS = $(Get-SkipSelectBands -XmlObject $XmlObject -MaxFilled $MaxFilled -MaxEmpty $MaxEmpty); #update indices of bands. } #Bands selction of interval's loop ended. $filled = $filled - $skipB #Updating filled band with selected interval. $timer.Start() #starts timer again #===========Excluding Extra KPOINTS from IBZKPT, No effect on GGA Calculations======== if ($SkipK -ne -1) { #check if $SkipK provided from calling function. $ibzkpt = $SkipK } Else { $ibzkpt = Read-KptsToExclude -XmlObject $XmlObject } #==================================================================== Write-Host "$ibzkpt IBZKPT file's KPOINTS Excluded!" -ForegroundColor Yellow #=============OnlyDOS Switch======================== if ($getonlydos -eq $True) { #Skipe Collection of Bands $ibzkpt = $NKPTS - 1; $skipB = 0; $NBANDS = 1; $filled = 1; } #Updated minimal working values to be able to load files #============================================================== #GetBands and KPTS $KptsObject = Get-KPTS -XmlObject $XmlObject -SkipNKPTS $ibzkpt $BandsObject = Get-EigenVals -XmlObject $XmlObject -SkipNKPTS $ibzkpt -SkipSelectNBANDS $skipB, $NBANDS Write-Host "Writing file [Bands.txt] ..." -ForegroundColor Red Write-KptsBands -XmlObject $XmlObject -KptsObject $KptsObject -BandsObject $BandsObject #=====================Main Part================================ Write-Host "Writing Total DOS on [tDOS.txt] ..." -ForegroundColor Red $tdos = Get-TotalDOS -XmlObject $XmlObject -SpinSet 1 #Automatically will write Spin polarized. Write-TotalDOS -TotalDOS $tdos Write-Host "Writing Partial DOS on [pDOS.txt] ..." -ForegroundColor Red Write-PartialDOS -XmlObject $XmlObject -SpinSet 1 #Automatically will write Spin polarized. Write-Host "Writing IONS Projections on [Projection.txt] in sequence ..." -ForegroundColor Red Write-Projection -SpinSet 1 -XmlObject $XmlObject -SkipNKPTS $ibzkpt -SkipSelectNBANDS $skipB, $NBANDS Write-Host @" Done ✔: $([Math]::Round($($timer.Elapsed.TotalSeconds),3)) seconds elapsed. "@ -ForegroundColor Cyan $timer.Stop() #close stopwatch $tTotal = [Math]::Round($($timer.Elapsed.TotalSeconds + $loadtime), 3); Write-Host "The process completed in $tTotal seconds." -ForegroundColor Cyan #Write Information of system only in Bands Folder if ($getonlydos -eq $True) { Write-Host "Only first band is collected for -OnlyDOS switch!" -ForegroundColor Red } $infoFile = New-Item ./SysInfo.py -Force #Create file Write-Host "Writing System information on file [$($infoFile.BaseName)] ..." -ForegroundColor Yellow -NoNewline $ElemIndex = $info.ElemIndex -Join ', '; $ElemName = $info.ElemName -Join ', '; #Elements Names and Indices Intervals $infoString = @" SYSTEM = `'$sys`' NKPTS = $($NKPTS-$ibzkpt) NBANDS = $NBANDS NFILLED = $filled TypeION = $($info.TypeION) NION = $NION NELECT = $($info.NELECT) nField_Projection = $($info.nField_Projection) E_Fermi = $($info.E_Fermi) ISPIN = $($info.ISPIN) ElemIndex = [$ElemIndex] ElemName = [$ElemName] fields = $($info.fields) INCAR = dict( $($info.INCAR | ForEach-Object {"{0}{1},`n" -f $(' '*25),$_}) ) "@ $infoString | Set-Content $infoFile #Here-String written on file # Crsytal System Information file. $volume = $info.V $basis = $info.Basis $recbasis = $info.RecBasis $poses = $info.Positions $basis = $basis -join "],`n [" $recbasis = $recbasis -join "],`n [" $poses = $poses -join "],`n [" $LatticeString = @" volume = $($volume) basis = [[$($basis)]] rec_basis = [[$($recbasis)]] positions = [[$($poses)]] "@ $LatticeString | Add-Content $infoFile #Writing of SysInfo Ends. Write-Host " Done ✔😎😍✔" Write-Host "▼ " -ForegroundColor Blue -NoNewline Write-Host " SYSTEM: $sys, NIONS: $NION, NBANDS: $NBANDS, Filled: $filled, NKPTS: $($NKPTS-$ibzkpt)" -ForegroundColor White -BackgroundColor Blue Write-Host "Files Generated: " -ForegroundColor Green -NoNewline $listFiles = Get-ChildItem -Name *.txt Write-Host $listFiles -Separator ' ' -ForegroundColor Yellow #Done |