| import java_cup.runtime.*; |
| import javax.swing.*; |
| import java.util.*; |
| import java.io.*; |
| |
| |
| |
| /* |
| OUTPUT FORMAT:____________________________________________________________ |
| 1NSERCH= 0 |
| more text |
| SCF Done: E(RHF) = -7.85284496695 A.U. after 8 cycles |
| more text |
| Maximum Force 0.000000 0.000450 YES |
| RMS Force 0.000000 0.000300 YES |
| more text |
| 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; |
| } |
| |
| // } |
| :} |
| |
| |
| |
| |
| terminal FOUNDITER1, SCFDONE1, NSearch1, Energ1, MaxGrad1, RmsGrad1; |
| terminal MPStart, NMP, MPEnerg, MPMax, MPRms, MPDONE; |
| terminal Integer ITERATION1, MPITER; |
| terminal Float ENERGY1, MGRAD1, RGRAD1, MPENERGY, MPMGRAD, MPRGRAD; |
| non terminal startpt, scfintro, scfpat, scfcycle, cycle, grad1, grad2; |
| non terminal mp2, mpintro, mppat, mpcycle, mpcycle1, force1, force2; |
| |
| |
| |
| /* ___________ |
| The grammer */ |
| |
| startpt ::= scfintro |
| scfpat |
| SCFDONE1 |
| mp2 |
| MPDONE |
| {: if (DEBUG) System.out.println("CUP:gopt: end of parse tree "); |
| :} |
| ; |
| |
| |
| |
| |
| scfintro ::= |
| FOUNDITER1 |
| {: if (DEBUG) System.out.println("CUP:gopt: found the start of Iteration"); :} |
| ; |
| |
| scfpat ::= scfpat scfcycle |
| {: if (DEBUG) System.out.println("CUP:gopt: in scfpat"); :} |
| | |
| scfcycle |
| // Originally: SCFDONE1 |
| ; |
| |
| scfcycle ::= Energ1 ENERGY1:e |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:gopt: ENERGY "+e); |
| :} |
| cycle |
| ; |
| |
| |
| |
| |
| cycle ::= NSearch1 ITERATION1:c |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:gopt: ITERATION "+c); |
| :} |
| grad1 |
| grad2 |
| ; |
| |
| grad1 ::= MaxGrad1 MGRAD1:mg |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:gopt: Maximum Force "+mg); |
| :} |
| ; |
| |
| grad2 ::= RmsGrad1 RGRAD1:rg |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:gopt: RMS Force "+rg); |
| :} |
| ; |
| |
| mp2 ::= mpintro mppat |
| {: |
| if (DEBUG) System.out.println("CUP:g1: in mp2 mpintro mppat"); |
| :} |
| ; |
| |
| mpintro ::= |
| MPStart |
| {: |
| if (DEBUG) System.out.println("CUP:g1: MPSTart "); |
| :} |
| ; |
| |
| mppat ::= mppat mpcycle1 |
| {: |
| if (DEBUG) System.out.println("CUP:g1: in mppat"); |
| :} |
| | |
| mpcycle1 |
| ; |
| |
| mpcycle1 ::= MPEnerg MPENERGY:mpen |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:g1: ENERGY "+mpen); |
| :} |
| mpcycle |
| ; |
| |
| |
| mpcycle ::= NMP MPITER:it |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:g1: MP ITERATION "+it); |
| :} |
| force1 |
| force2 |
| ; |
| |
| force1 ::= MPMax MPMGRAD:mpmg |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:g1: MP Maximum Force "+mpmg); |
| :} |
| ; |
| |
| force2 ::= MPRms MPRGRAD:mprg |
| {: //___________________________________________________________________ |
| if (DEBUG) System.out.println("CUP:g1: MP RMS Force "+mprg); |
| :} |
| ; |