#!/usr/bin/env perl # Generate delta.dat for flat bands. The same mesh is used as for spectral functions. # Rok Zitko, rok.zitko@ijs.si, June 2012 use warnings; use strict; use Env; my $max = `getparam broaden_max param.loop`; my $ratio = `getparam broaden_ratio param.loop`; my $min = `getparam broaden_min param.loop`; chomp ($max, $ratio, $min); my $Gamma = 0.3; chomp($Gamma); my @l = (); for (my $x = $max; $x >= $min; $x /= $ratio) { my $xpos = $x; my $ypos = initialfn($xpos); my $xneg = -$x; my $yneg = initialfn($xneg); push(@l, [$xpos, $ypos]); push(@l, [$xneg, $yneg]); } my @sorted = sort { $a->[0] <=> $b->[0] } @l; my $fn = "Delta.dat"; open(OUT, ">$fn") or die "Can't open $fn: $!. Stopped"; foreach (@sorted) { my ($x, $y) = @$_; print OUT "$x $y\n"; } close(OUT); # Hybridisation function system "${NRGPREFIX} kk Delta.dat Delta-re.dat"; sub initialfn { my $x = shift; # Pseudo-gap DOS which goes to zero at omega=0 as square root, # multipled by some asymmeric factor my $g = $Gamma * (abs($x) < 1.0 ? (1-$x**2) : 1e-5); return $g; }