| import java_cup.runtime.*; |
| import javax.swing.*; |
| import java.util.*; |
| import java.io.*; |
| |
| |
| |
| /* |
| OUTPUT FORMAT:____________________________________________________________ |
| -------------------------- |
| RHF SCF CALCULATION |
| -------------------------- |
| |
| NUCLEAR ENERGY = 6.1221376700 |
| MAXIT = 30 NPUNCH= 2 |
| EXTRAP=T DAMP=F SHIFT=F RSTRCT=F DIIS=F DEM=F SOSCF=F |
| DENSITY CONV= 1.00E-05 |
| MEMORY REQUIRED FOR RHF STEP= 30441 WORDS. |
| |
| ITER EX DEM TOTAL ENERGY E CHANGE DENSITY CHANGE DIIS ERROR |
| 1 0 0 -37.172577283 -37.172577283 0.380764107 0.000000000 |
| 2 1 0 -37.227975620 -0.055398337 0.131481807 0.000000000 |
| 3 2 0 -37.231732248 -0.003756628 0.046548652 0.000000000 |
| 4 3 0 -37.232193210 -0.000460963 0.016847695 0.000000000 |
| |
| TO MONITOR:____________________________________________________________ |
| iteration, energy |
| |
| MANUALLY ADD TO CUP-GENERATED CLASS IN SCFaParser.java:________________ |
| |
| |
| //add to CUP$SCFaParser$actions |
| public ParseSCF2 parseSCF; |
| |
| //add to the constructor of CUP$SCFaParser$actions |
| parseSCF = new ParseSCF2(); |
| |
| */ |
| |
| action code {: |
| //__________________________________ |
| public static boolean DEBUG = true; |
| private static JTable table; |
| private static final String tableLabel = "SCF Intermediate Results:"; |
| // private static String cycle = "0"; |
| |
| |
| public static JTable getTable() { |
| return table; |
| } |
| |
| public static String getTableLabel() { |
| return tableLabel; |
| } |
| |
| /* public static void main(String[] args) throws IOException { |
| File temp = new File("temporary"); |
| boolean append = true; |
| try{ |
| FileWriter temp1 = new FileWriter(temp, append); |
| PrintWriter temp2 = new PrintWriter(temp1);} |
| |
| catch (FileNotFoundException e) { |
| System.out.println("no file, dude!"); |
| } */ |
| // } |
| :} |
| |
| |
| |
| |
| terminal FOUNDITER, SCFDONE; |
| terminal Integer INT1, INT2, INT3, INTCycle; |
| terminal Float FLOAT, FLOAT1, FLOAT2, FLOAT3, ENERGY, FLOAT4; |
| terminal Float FLOAT5, FLOAT6, FLOAT7, FLOAT8; |
| non terminal startpt, scfintro, scfpat, scfcycle, en; |
| |
| |
| |
| |
| /* ___________ |
| The grammer */ |
| |
| startpt ::= scfintro |
| scfpat |
| SCFDONE |
| {: if (DEBUG) System.out.println("CUP:gscfa: end of parse tree "); |
| table = new JTable(); |
| |
| // table = parseSCF.getTable(); |
| :} |
| ; |
| |
| |
| |
| |
| scfintro ::= |
| FOUNDITER |
| {: if (DEBUG) System.out.println("CUP:gscfa: found start of SCF Iteration"); :} |
| ; |
| |
| scfpat ::= scfpat scfcycle |
| {: if (DEBUG) System.out.println("CUP:gscfa: in scfpat"); :} |
| | |
| scfcycle |
| ; |
| |
| scfcycle ::= |
| INTCycle:c |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:gscfa:scfcycle: ITERATION "+c); |
| // temp2.print(c); |
| // temp2.print(" "); |
| // cycle = c; |
| |
| // parseSCF.putField("iteration "+cycle, cycle); |
| :} |
| en |
| FLOAT1 FLOAT2 FLOAT3 FLOAT4 FLOAT5 FLOAT6 FLOAT7 FLOAT8 |
| ; |
| |
| |
| |
| |
| en ::= |
| ENERGY:e |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:gscfa:scfcycle: ENERGY "+e); |
| // temp2.println(e); |
| // parseSCF.putField("iteration "+cycle, "energy", e); |
| :} |
| ; |