File : mm1norm_w.adb
with Reps, Messages, Fouriers_Init, Lin, Lin.IO;
use Reps, Messages, Fouriers_Init, Lin, Lin.IO;
with RG_Ops;
with Intervals, Intervals.Ops, Intervals.IO;
use Intervals, Intervals.Ops, Intervals.IO;
pragma Elaborate_All(Intervals.Ops, Intervals.IO);
procedure MM1Norm_W is
-- arguments: Col1 Col2
subtype Scalar is Interval;
Lmax: constant Positive := 30;
Wmax: constant Positive := 30;
Pdeg: constant Positive := 12;
Dho: constant Natural := 6;
Sigma: constant Rep := 0.85001;
Kappa: constant Rep := Sigma/0.4;
package MM1Norm_W_Ops is new RG_Ops (Lmax => Lmax, Wmax => Wmax, Pdeg => Pdeg, Dho => Dho,
Sigma => Sigma, Kappa => Kappa, Scalar => Scalar);
use MM1Norm_W_Ops;
use Scal_Fou, Scal_Fou_Ops, Scal_Fou_IO;
R: constant Weights := (0.85,0.15); -- for domain of RG
Iname: constant String := "30-16-8"; -- name stem for input Hamiltonians
Yname: constant String := "85B04"; -- name stem for input matrices
HDec: constant Boolean := False; -- use decimal IO for Hamiltonians
Lhh: constant Positive := 20; -- number of columns processed in each MM1 call
Nyy: constant Positive := 294911; -- maximum number of entries in sparse matrix W
Err: constant Radius := 1.0E-12; -- precision for NumFixComp3 etc.
Col1: constant Positive := GetArg(1);
Col2: constant Positive := GetArg(2);
B3: Radius;
E: Scalar;
H1,Hdq,Hdp,Hq,Hzp,Hdi: Hamilton;
W: Sparse(0 .. Nyy);
begin
Trace; -- activate TraceEnter/TraceLeave
ShowParam;
Show("Col1 =",Col1);
Show("Col2 =",Col2);
Show(" Lhh =",Lhh);
Show(" R =",R);
Show(" Err =",Err);
Read("W-" & Yname & ".tdr",W);
Read("Fix-" & Iname & ".nh",0,(Two,One),H1,HDec);
Read("Hdq-" & Iname & ".nh",1,(Two,One),Hdq,HDec);
Read("Hdp-" & Iname & ".nh",0,(Two,One),Hdp,HDec);
Read("Hzp-" & Iname & ".nh",0,(Two,One),Hzp,HDec);
B3 := Sup(Norm(R,Hzp));
Read("Hq-" & Iname & ".nh",1,(R.Q,B3),Hq,HDec);
Read("Hdi-" & Iname & ".nh",0,(Two,One),Hdi,HDec);
MM1Norm(Err,R,W,Hq,Hzp,H1,Hdq,Hdp,Hdi,Col1,Col2,Lhh,E);
end MM1Norm_W;