Esempio n. 1
0
        private void UpdateOutputParameters(
            QQState.QQState state
            )
        {
            Energy_MeV        = state.Param.Energy_MeV;
            GammaDamp_MeV     = state.Param.GammaDamp_MeV;
            SoftScale_MeV     = state.Param.SoftScale_MeV;
            AlphaHard         = state.AlphaHard;
            AlphaSoft         = state.AlphaSoft;
            AlphaThermal      = state.AlphaThermal;
            DebyeMass_MeV     = state.DebyeMass_MeV;
            Sigma_MeV2        = state.Param.Sigma_MeV;
            SigmaEff_MeV2     = state.SigmaEff_MeV;
            StepSize          = state.StepSize_fm;
            StepsPerPeriod    = state.WaveVector_fm * state.StepSize_fm;
            Tchem_MeV         = state.Param.Tchem_MeV;
            Tcrit_MeV         = state.Param.Tcrit_MeV;
            Trials            = state.Trials;
            WaveVector_per_fm = state.WaveVector_fm;

            if (state is QQBoundState)
            {
                QQBoundState boundState = state as QQBoundState;
                NumberExtrema             = boundState.NumberExtrema;
                BoundMass_MeV             = boundState.BoundMass_MeV;
                AvgInvDisplacement_per_fm = boundState.RadiusExpectationValue(-1);
                DisplacementRMS_fm        = Math.Sqrt(boundState.RadiusExpectationValue(2));
                AlphaUltraSoft            = boundState.AlphaUltraSoft;
                UltraSoftScale_MeV        = boundState.UltraSoftScale_MeV;
            }
        }
Esempio n. 2
0
        public void HydrogenN2L1()
        {
            QQBoundState boundState = CreateBoundState_HydrogenN2L1();

            boundState.SearchEigenfunction();

            AssertAccuracyAchieved(1e-6, GetMaxDeviationFromHydrogenN2L1(boundState));
        }
Esempio n. 3
0
        private double GetMaxDeviationFromHydrogenN2L1(
            QQBoundState boundState
            )
        {
            Complex[] hydrogenWave = GetHydrogenWaveN2L1Array(
                boundState.WaveVector_fm, boundState.Radius_fm);

            return(GetMaxDeviation(boundState.Radius_fm, boundState.WaveFunction_fm, hydrogenWave));
        }
Esempio n. 4
0
        public void CalculateQuarkMass()
        {
            PrepareJob("CalculateQuarkMass", BoundWaveStatusTitles);

            try
            {
                QQBoundState boundState = new QQBoundState(GetQQStateParam(), QuantumNumberN)
                {
                    CalculationCancelToken = JobCancelToken,
                    StatusValues           = StatusValues
                };

                QuarkMass_MeV = boundState.SearchQuarkMass(BoundMass_MeV);

                // quit here if process has been aborted
                if (JobCancelToken.IsCancellationRequested)
                {
                    LogMessages.Clear();
                    LogMessages.Append(LogHeader + LogFooter);
                    return;
                }

                UpdateOutputParameters(boundState);

                LogMessages.Clear();
                LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#" + Environment.NewLine + LogFooter);

                List <string> dataList = new List <string>();
                dataList.Add(LogHeader + "#" + Environment.NewLine + "#");
                dataList.AddRange(CreateWaveFunctionDataList(boundState));
                File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList);
            }
            catch
            {
                throw;
            }
        }
Esempio n. 5
0
        public void FindQuarkMass()
        {
            QQStateParam param = GetCommonBoundStateParam();

            param.AccuracyWaveFunction = 1e-9;
            param.AggressivenessAlpha  = 0.5;
            param.AggressivenessEnergy = 40;
            param.Energy_MeV           = -141.517335648066;
            param.PotentialType        = PotentialType.Tzero;
            param.QuantumNumberL       = 0;
            param.Sigma_MeV            = 192000;
            param.SoftScale_MeV        = 1542.07788957569;
            param.StepNumber           = 20000;

            QQBoundState boundState = new QQBoundState(param, 1);

            double MassY1S_MeV = 9460.3;

            boundState.SearchQuarkMass(MassY1S_MeV);

            Assert.IsTrue(
                Math.Abs(boundState.Param.QuarkMass_MeV / param.QuarkMass_MeV - 1.0) < 1e-6);
            Assert.IsTrue(Math.Abs(boundState.BoundMass_MeV / MassY1S_MeV - 1.0) < 1e-6);
        }
Esempio n. 6
0
        public void CalculateDissociationDecayWidth()
        {
            PrepareJob("CalculateDissociationDecayWidth", BoundWaveStatusTitles);

            try
            {
                QQBoundState boundState = new QQBoundState(GetQQStateParam(), QuantumNumberN)
                {
                    CalculationCancelToken = JobCancelToken,
                    StatusValues           = StatusValues
                };

                boundState.SearchEigenfunction();

                // quit here if process has been aborted
                if (JobCancelToken.IsCancellationRequested)
                {
                    LogMessages.Clear();
                    LogMessages.Append(LogHeader + LogFooter);
                    return;
                }

                UpdateOutputParameters(boundState);

                SetStatusVariables(CrossSectionStatusTitles);

                // calculate decay width and cross section
                DecayWidth decayWidth = new DecayWidth(JobCancelToken, boundState, MaxEnergy_MeV,
                                                       EnergySteps, Temperature_MeV, StatusValues);
                decayWidth.CalculateGammaDiss();

                // quit here if process has been aborted
                if (JobCancelToken.IsCancellationRequested)
                {
                    LogMessages.Clear();
                    LogMessages.Append(LogHeader + LogFooter);
                    return;
                }

                GammaDiss_MeV = decayWidth.GammaDiss_MeV;
                GammaTot_MeV  = GammaDamp_MeV + GammaDiss_MeV;

                LogMessages.Clear();
                LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#");
                LogMessages.AppendLine("Temperature DebyeMass   √<r²>       SoftScale   US_Scale    BoundMass   Energy      GammaDamp   GammaDiss   GammaTot    ");
                LogMessages.AppendLine("(MeV)       (MeV)       (fm)        (Mev)       (Mev)       (MeV)       (MeV)       (MeV)       (MeV)       (MeV)       ");
                LogMessages.AppendLine();
                LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}{8,-12}{9,-12}",
                                                     Temperature_MeV.ToString("G6"),
                                                     DebyeMass_MeV.ToString("G6"),
                                                     DisplacementRMS_fm.ToString("G6"),
                                                     SoftScale_MeV.ToString("G6"),
                                                     UltraSoftScale_MeV.ToString("G6"),
                                                     BoundMass_MeV.ToString("G6"),
                                                     Energy_MeV.ToString("G6"),
                                                     GammaDamp_MeV.ToString("G6"),
                                                     GammaDiss_MeV.ToString("G6"),
                                                     GammaTot_MeV.ToString("G6")));
                LogMessages.Append(LogFooter);

                List <string> dataList = new List <string>();
                dataList.Add(LogHeader + "#" + Environment.NewLine + "#");
                dataList.AddRange(CreateWaveFunctionDataList(boundState));
                dataList.Add(string.Empty);
                dataList.Add(string.Empty);
                dataList.AddRange(decayWidth.CrossSectionStringList);
                File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList);
            }
            catch
            {
                throw;
            }
        }
Esempio n. 7
0
        public void CalculateBoundWaveFunction()
        {
            PrepareJob("CalculateBoundWaveFunction", BoundWaveStatusTitles);

            try
            {
                QQBoundState boundState = new QQBoundState(GetQQStateParam(), QuantumNumberN)
                {
                    CalculationCancelToken = JobCancelToken,
                    StatusValues           = StatusValues,
                    UseFixedAlpha          = UseFixedAlpha
                };

                boundState.SearchEigenfunction();

                // quit here if process has been aborted
                if (JobCancelToken.IsCancellationRequested)
                {
                    LogMessages.Clear();
                    LogMessages.Append(LogHeader + LogFooter);
                    return;
                }

                UpdateOutputParameters(boundState);

                LogMessages.Clear();
                LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#");
                LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}",
                                                     "Temperature",
                                                     "DebyeMass",
                                                     "√<r²>",
                                                     "SoftScale",
                                                     "US_Scale",
                                                     "BoundMass",
                                                     "Energy",
                                                     "GammaDamp"));
                LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}",
                                                     "(MeV)",
                                                     "(MeV)",
                                                     "(fm)",
                                                     "(Mev)",
                                                     "(Mev)",
                                                     "(MeV)",
                                                     "(MeV)",
                                                     "(MeV)"));
                LogMessages.AppendLine();
                LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}",
                                                     Temperature_MeV.ToString("G6"),
                                                     DebyeMass_MeV.ToString("G6"),
                                                     DisplacementRMS_fm.ToString("G6"),
                                                     SoftScale_MeV.ToString("G6"),
                                                     UltraSoftScale_MeV.ToString("G6"),
                                                     BoundMass_MeV.ToString("G6"),
                                                     Energy_MeV.ToString("G6"),
                                                     GammaDamp_MeV.ToString("G6")));
                LogMessages.Append(LogFooter);

                List <string> dataList = new List <string>();
                dataList.Add(LogHeader + "#" + Environment.NewLine + "#");
                dataList.AddRange(CreateWaveFunctionDataList(boundState));
                File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList);
            }
            catch
            {
                throw;
            }
        }