コード例 #1
0
        private void RpaChi0Thread(object obj)
        {
            RpaThreadInfo info = (RpaThreadInfo)obj;

            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
            watch.Start();
            TightBinding     tb   = info.tb;
            List <RpaParams> rpa  = info.RpaParams;
            KptList          qpts = info.qpts;

            for (int i = 0; i < rpa.Count; i++)
            {
                SetTemperature(tb, rpa[i].Temperature, rpa[i].ChemicalPotential);

                rpa[i].X0 = CalcX0(tb, rpa[i].Frequency, qpts.Kpts[rpa[i].Qindex]);

                if (i == 0 && info.PrimaryThread)
                {
                    long     time = watch.ElapsedTicks * rpa.Count;
                    TimeSpan s    = new TimeSpan(time);

                    Output.WriteLine("Estimated total time {0:+hh.mm}", s);
                }
                Complex val = rpa[i].X0.Trace();


                Output.Write("q = {0}, T = {1:0.000}, mu = {2:0.000}, omega = {3:0.0000}",
                             rpa[i].Qindex + 1, rpa[i].Temperature, rpa[i].ChemicalPotential, rpa[i].Frequency);
                Output.WriteLine(", Tr(X_0) = {0}", val.ToString("0.0000"));
            }
        }
コード例 #2
0
        private void RunRpaThread(RpaThreadInfo info)
        {
            Thread t = new Thread(RpaChi0Thread);

            info.Thread = t;
            info.Thread.Start(info);
        }
コード例 #3
0
        private RpaThreadInfo[] CreateThreadInfos(TightBinding tb, List <RpaParams> rpa, KptList qpts)
        {
            RpaThreadInfo[] infos = new RpaThreadInfo[threads];

            for (int i = 0; i < infos.Length; i++)
            {
                infos[i]      = new RpaThreadInfo();
                infos[i].tb   = tb.Clone();
                infos[i].qpts = qpts;
            }

            infos[0].PrimaryThread = true;

            for (int i = 0; i < rpa.Count; i++)
            {
                infos[i % threads].RpaParams.Add(rpa[i]);
            }

            return(infos);
        }
コード例 #4
0
ファイル: RPA.cs プロジェクト: eylvisaker/tbsuite
 private void RunRpaThread(RpaThreadInfo info)
 {
     Thread t = new Thread(RpaChi0Thread);
     info.Thread = t;
     info.Thread.Start(info);
 }
コード例 #5
0
ファイル: RPA.cs プロジェクト: eylvisaker/tbsuite
        private RpaThreadInfo[] CreateThreadInfos(TightBinding tb, List<RpaParams> rpa, KptList qpts)
        {
            RpaThreadInfo[] infos = new RpaThreadInfo[threads];

            for (int i = 0; i < infos.Length; i++)
            {
                infos[i] = new RpaThreadInfo();
                infos[i].tb = tb.Clone();
                infos[i].qpts = qpts;
            }

            infos[0].PrimaryThread = true;

            for (int i = 0; i < rpa.Count; i++)
            {
                infos[i % threads].RpaParams.Add(rpa[i]);
            }

            return infos;
        }