diff --git a/Cleopatra/InFileCreator.h b/Cleopatra/InFileCreator.h index b6cf622..83d3a32 100644 --- a/Cleopatra/InFileCreator.h +++ b/Cleopatra/InFileCreator.h @@ -103,8 +103,8 @@ int InFileCreator(string readFile, string infile, double angMin, double angMax, bool isReactionSupported = false; bool isTransferReaction = true; - if( iso_a.A <= 4 && iso_a.Z <= 2 && iso_b.A <=4 && iso_b.Z <=2 ) isReactionSupported = true; - + if( iso_a.A <= 4 && iso_a.Z <= 2 && iso_b.A <= 4 && iso_b.Z <=2 ) isReactionSupported = true; + ///======= elastics-ish scattering if( iso_a.Mass == iso_b.Mass ) isTransferReaction = false; @@ -114,7 +114,10 @@ int InFileCreator(string readFile, string infile, double angMin, double angMax, ///======= 3-nucleons transfer is not supported. e.g. (n,a), (p,a), (a,n), (a,p) int numNucleonsTransfer = iso_a.A - iso_b.A; if( abs(numNucleonsTransfer) >= 3 ) isReactionSupported = false; - + + ///======= (6Li,d) reaction + if( iso_a.A == 6 && iso_a.Z == 3 && iso_b.A == 2 && iso_b.Z == 1 ) isReactionSupported = true; + if( isReactionSupported == false ){ printf(" ===> Ignored. Reaction type not supported. \n"); continue; @@ -176,12 +179,17 @@ int InFileCreator(string readFile, string infile, double angMin, double angMax, spdf = GetLValue(lValue); } - // two-nucleons transfer - if( abs(iso_a.A - iso_b.A) == 2 ){ + // two-nucleons transfer, v vc + if( abs(iso_a.A - iso_b.A) == 2 || abs(iso_a.A - iso_b.A) == 4 ){ size_t posEq = orbital.find('='); lValue = orbital.substr(posEq+1,1); spdf=atoi(lValue.c_str()); } + + // (6Li,d) + if( abs(iso_a.A - iso_b.A) == 4 ){ + + } if( abs(iso_a.A - iso_b.A) == 0 ){ printf(" ===? skipped. p-n exchange reaction does not support. \n"); @@ -320,10 +328,14 @@ int InFileCreator(string readFile, string infile, double angMin, double angMax, fprintf(file_out, "PARAMETERSET alpha3 r0target\n"); fprintf(file_out, "lstep=1 lmin=0 lmax=30 maxlextrap=0 ASYMPTOPIA=40\n"); fprintf(file_out, "\n"); - fprintf(file_out, "PROJECTILE\n"); - fprintf(file_out, "wavefunction phiffer\n"); - fprintf(file_out, "L = 0 NODES=0 R0 = 1.25 A = .65 RC0 = 1.25\n"); + fprintf(file_out, "PROJECTILE nodes=0 l=0 r0=1.25 a=0.65 rc0=1.25\n"); } + + if( iso_a.A == 6 && iso_a.Z == 3 && iso_b.A == 2 && iso_b.Z == 1 ){ + fprintf(file_out, "PARAMETERSET alpha3 r0target maxlextrap=0 asymptopia=100\n"); + fprintf(file_out, "PROJECTILE nodes=0 l=0 r0=1.25 a=0.65 rc0=1.25\n"); + } + fprintf(file_out, ";\n"); //===== TARGET @@ -359,9 +371,13 @@ int InFileCreator(string readFile, string infile, double angMin, double angMax, } } + if( iso_a.A == 6 && iso_a.Z == 3 && iso_b.A == 2 && iso_b.Z == 1 ){ + fprintf(file_out, "nodes=4 l=%d \n", spdf); + } + fprintf(file_out, ";\n"); - //===== POTENTIAL + //===== POTENTIAL string pot1Name = potential.substr(0,1); string pot1Ref = potentialRef(pot1Name); fprintf(file_out, "INCOMING $%s\n", pot1Ref.c_str()); diff --git a/Cleopatra/potentials.h b/Cleopatra/potentials.h index be623be..3d75041 100644 --- a/Cleopatra/potentials.h +++ b/Cleopatra/potentials.h @@ -25,7 +25,7 @@ void PrintPotential(){ } /// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z -/// 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 1 +/// 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 1 // 1 = used string potentialRef(string name){ //======== Deuteron @@ -107,6 +107,11 @@ string potentialRef(string name){ if( name == "f"){ return "(FIXED) Bassani and Picard, (1969) 24 < E < 31 | A = 90 | https://doi.org/10.1016/0375-9474(69)90601-0"; } + + //======= 6Li + if( name == "6"){ + return "Fixed 6Li potential"; + } //====== custom if( name == "Y"){ @@ -168,6 +173,22 @@ bool CustomYPotential(int A, int Z, double E){ return true; } + +//======================== 6Li +bool SixLithium(){ + v = 101.2; + r0 = 1.24; + a = 0.817; + + vi = 12.64; + ri0 = 1.57; + ai = 0.690; + + rc0 = 1.3; + + return true; +} + //======================== deuteron bool AnCaiPotential(int A, int Z, double E){ // d + A(Z) @@ -1065,6 +1086,8 @@ bool CallPotential(string potName, int A, int Z, double E, int Zproj){ if( potName == "X") okFlag = CustomXPotential(A, Z, E); if( potName == "Y") okFlag = CustomYPotential(A, Z, E); + + if( potName == "6") okFlag = SixLithium(); //printf(" Potenital : %s | A : %d | Z : %d | E : %f\n", potName.c_str(), A, Z, E); //PrintPotential(); diff --git a/PyGUIQt6/DWBA b/PyGUIQt6/DWBA index 81d0502..f262e53 100644 --- a/PyGUIQt6/DWBA +++ b/PyGUIQt6/DWBA @@ -31,6 +31,8 @@ # s = Su and Han, 2015 | E < 398 | 20 < A < 209 | http://dx.doi/org/10.1142/S0218301315500925 # a = Avrigeanu et al., 2009 | E ??? | A ??? | http://dx.doi/org/10.1016/j.adt.2009.02.001 # f = Bassani and Picard, 1969(FIXED)| 24 < E < 31 | A = 90 | https://doi.org/10.1016/0375-9474(69)90601-0 +#========================= 6Li +# 6 = a fixed 6Li potential, only valid for (6Li,d) #======================================================================= #reaction gs-spin orbital spin-pi(Ex) Ex ELab Potentials #206Hg(d,d)206Hg 0 none 9/2+ 0.000 7.39MeV/u AA #elastic @@ -42,5 +44,4 @@ #32Si(t,p)34Si 0 0L=0 0+ 0.000 8MeV/u lA #two-nucleon_transfer #133Sb(t,3He)133Sn 7/2 0g7/2 0+ 0.000 8.5MeV/u Ax .... cannot cal -11C(d,p)12C 3/2- 0p1/2 2+ 4.4 10MeV/u AK -11C(d,p)12C 3/2- 0p1/2 1+ 15.1 10MeV/u AK \ No newline at end of file +12C(6Li,d)16O 0+ nL=2 2+ 0.0 10MeV/u 6K \ No newline at end of file diff --git a/PyGUIQt6/PtolemyGUIPy.py b/PyGUIQt6/PtolemyGUIPy.py index 82df57b..c309a78 100755 --- a/PyGUIQt6/PtolemyGUIPy.py +++ b/PyGUIQt6/PtolemyGUIPy.py @@ -63,6 +63,9 @@ class MyWindow(QMainWindow): self.bnOpenXsecFile = QPushButton("Open X-sec File") self.bnOpenXsecFile.clicked.connect(lambda: self.LoadFileToTextBox(self.DWBAFileName + ".Xsec.txt")) + self.bnDeleteFiles = QPushButton("Delete in/out/Xsec files") + self.bnDeleteFiles.clicked.connect(self.DeleteinOutXsecFiles) + lbAngMin = QLabel("angMin :") lbAngMin.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignCenter) lbAngMax = QLabel("angMax :") @@ -107,22 +110,23 @@ class MyWindow(QMainWindow): group_layout.addWidget(self.bnOpenInFile, 1, 0, 1, 2) group_layout.addWidget(self.bnOpenOutFile, 2, 0, 1, 2) group_layout.addWidget(self.bnOpenXsecFile, 3, 0, 1, 2) + group_layout.addWidget(self.bnDeleteFiles, 4, 0, 1, 2) - group_layout.addWidget(lbAngMin, 4, 0) - group_layout.addWidget(self.sbAngMin, 4, 1) - group_layout.addWidget(lbAngMax, 5, 0) - group_layout.addWidget(self.sbAngMax, 5, 1) - group_layout.addWidget(lbAngSize, 6, 0) - group_layout.addWidget(self.sbAngSize, 6, 1) + group_layout.addWidget(lbAngMin, 5, 0) + group_layout.addWidget(self.sbAngMin, 5, 1) + group_layout.addWidget(lbAngMax, 6, 0) + group_layout.addWidget(self.sbAngMax, 6, 1) + group_layout.addWidget(lbAngSize, 7, 0) + group_layout.addWidget(self.sbAngSize, 7, 1) - group_layout.addWidget(self.chkCreateInFile, 7, 0, 1, 2) - group_layout.addWidget(self.chkRunPtolemy, 8, 0, 1, 2) - group_layout.addWidget(self.chkExtracrXsec, 9, 0, 1, 2) + group_layout.addWidget(self.chkCreateInFile, 8, 0, 1, 2) + group_layout.addWidget(self.chkRunPtolemy, 9, 0, 1, 2) + group_layout.addWidget(self.chkExtracrXsec, 10, 0, 1, 2) - group_layout.addWidget(self.cbXsec, 10, 0, 1, 2) - group_layout.addWidget(self.chkPlot, 11, 0, 1, 2) + group_layout.addWidget(self.cbXsec, 11, 0, 1, 2) + group_layout.addWidget(self.chkPlot, 12, 0, 1, 2) - group_layout.addWidget(self.bnCalDWBA, 12, 0, 1, 2) + group_layout.addWidget(self.bnCalDWBA, 13, 0, 1, 2) # Ex Group self.gbEx = QGroupBox("Ex") @@ -230,6 +234,15 @@ class MyWindow(QMainWindow): file.write(self.text_edit.toPlainText()) self.leStatus.setText(f"File saved to: {file_path}") + def DeleteinOutXsecFiles(self): + if os.path.exists(self.DWBAFileName + ".in"): + os.remove(self.DWBAFileName + ".in") + if os.path.exists(self.DWBAFileName + ".out"): + os.remove(self.DWBAFileName + ".out") + if os.path.exists(self.DWBAFileName + ".Xsec.txt"): + os.remove(self.DWBAFileName + ".Xsec.txt") + self.leStatus.setText("Deleted " + self.DWBAFileName + ".in/.out/.Xsec.txt files") + def BashCommand(self, cmd): print("Bash Command : |" + cmd + "|") self.bashResult = subprocess.run(cmd, shell=True, capture_output=True, text=True) @@ -276,7 +289,7 @@ class MyWindow(QMainWindow): if isRunOK and self.chkExtracrXsec.isChecked() and self.file_exists(self.DWBAFileName + ".out") : extract_xsec(self.DWBAFileName + ".out", self.cbXsec.currentIndex()) - if self.chkPlot.isChecked() and self.file_exists(self.DWBAFileName + ".Xsec.txt") : + if isRunOK and self.chkPlot.isChecked() and self.file_exists(self.DWBAFileName + ".Xsec.txt") : self.open_plot_window() def open_plot_window(self):