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; } }
public void HydrogenN2L1() { QQBoundState boundState = CreateBoundState_HydrogenN2L1(); boundState.SearchEigenfunction(); AssertAccuracyAchieved(1e-6, GetMaxDeviationFromHydrogenN2L1(boundState)); }
private double GetMaxDeviationFromHydrogenN2L1( QQBoundState boundState ) { Complex[] hydrogenWave = GetHydrogenWaveN2L1Array( boundState.WaveVector_fm, boundState.Radius_fm); return(GetMaxDeviation(boundState.Radius_fm, boundState.WaveFunction_fm, hydrogenWave)); }
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; } }
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); }
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; } }
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; } }