From: <ha...@us...> - 2009-06-23 16:47:49
|
Revision: 11085 http://jmol.svn.sourceforge.net/jmol/?rev=11085&view=rev Author: hansonr Date: 2009-06-23 16:47:45 +0000 (Tue, 23 Jun 2009) Log Message: ----------- version=11.7.44_dev # new feature: MO LIST or SHOW MO LIST display listing of orbitals for all files # new feature: GAMESS reader now sets calculationType, orbital type, and auxiliaryInfo.calculationOptions # bug fix: select(x;{xxx};...) or for(x;{xxx};...) when {xxx} is empty returns incorrect result # bug fix: dipoles cannot be colored by name # bug fix: dipole settings not accessible via wildcards # new feature: merging of label() and format() functions -- same in all respects. # bug fix: spartan'08 reader not reading vibrations Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java trunk/Jmol/src/org/jmol/adapter/readers/more/MOReader.java trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java 2009-06-23 16:47:08 UTC (rev 11084) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java 2009-06-23 16:47:45 UTC (rev 11085) @@ -31,11 +31,11 @@ import org.jmol.api.JmolAdapter; import org.jmol.util.Logger; +import org.jmol.util.TextFormat; abstract public class GamessReader extends MOReader { protected Vector atomNames; - protected boolean isUHF = false; abstract protected void readAtomsInBohrCoordinates() throws Exception; @@ -220,5 +220,99 @@ } return line; } - + + /* + BASIS OPTIONS + ------------- + GBASIS=N311 IGAUSS= 6 POLAR=DUNNING + NDFUNC= 3 NFFUNC= 1 DIFFSP= T + NPFUNC= 3 DIFFS= T + SPLIT3= 4.00000000 1.00000000 0.25000000 + + + $CONTRL OPTIONS + --------------- +SCFTYP=UHF RUNTYP=OPTIMIZE EXETYP=RUN +MPLEVL= 2 CITYP =NONE CCTYP =NONE VBTYP =NONE +DFTTYP=NONE TDDFT =NONE +MULT = 3 ICHARG= 0 NZVAR = 0 COORD =UNIQUE +PP =NONE RELWFN=NONE LOCAL =NONE NUMGRD= F +ISPHER= 1 NOSYM = 0 MAXIT = 30 UNITS =ANGS +PLTORB= F MOLPLT= F AIMPAC= F FRIEND= +NPRINT= 7 IREST = 0 GEOM =INPUT +NORMF = 0 NORMP = 0 ITOL = 20 ICUT = 9 +INTTYP=BEST GRDTYP=BEST QMTTOL= 1.0E-06 + +$SYSTEM OPTIONS +*/ + + + + private Hashtable calcOptions; + private boolean isTypeSet; + + protected void setCalculationType() { + if (calcOptions == null || isTypeSet) + return; + isTypeSet = true; + String SCFtype = (String) calcOptions.get("contrl_options_SCFTYP"); + String Runtype = (String) calcOptions.get("contrl_options_RUNTYP"); + String igauss = (String) calcOptions.get("basis_options_IGAUSS"); + String gbasis = (String) calcOptions.get("basis_options_GBASIS"); + if (igauss == null && SCFtype == null) + return; + + if (calculationType.equals("?")) + calculationType = ""; + + if (igauss != null) { + if (calculationType.length() > 0) + calculationType += " "; + calculationType += igauss + "-" + + TextFormat.simpleReplace(gbasis, "N", ""); + // Q: "N" here means what? + } + if (SCFtype != null) { + if (calculationType.length() > 0) + calculationType += " "; + calculationType += SCFtype + " " + Runtype; + } + } + + protected void readControlInfo() throws Exception { + readCalculationInfo("contrl_options_"); + } + + protected void readBasisInfo() throws Exception { + readCalculationInfo("basis_options_"); + } + + private void readCalculationInfo(String type) throws Exception { + if (calcOptions == null) { + calcOptions = new Hashtable(); + atomSetCollection.setAtomSetCollectionAuxiliaryInfo("calculationOptions", + calcOptions); + } + while (readLine() != null && (line = line.trim()).length() > 0) { + if (line.indexOf("=") < 0) + continue; + String[] tokens = getTokens(TextFormat.simpleReplace(line, "="," = ")); + for (int i = 0; i < tokens.length; i++) { + if (!tokens[i].equals("=")) + continue; + try { + String key = type + tokens[i - 1]; + String value = (key.equals("basis_options_SPLIT3") ? tokens[++i] + " " + tokens[++i] + + " " + tokens[++i] : tokens[++i]); + if (Logger.debugging) + Logger.debug(key + " = " + value); + calcOptions.put(key, value); + } catch (Exception e) { + // not interested + } + } + } + } + + } Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/MOReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/MOReader.java 2009-06-23 16:47:08 UTC (rev 11084) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/MOReader.java 2009-06-23 16:47:45 UTC (rev 11085) @@ -103,6 +103,7 @@ protected boolean iHaveAtoms = false; protected boolean continuing = true; protected boolean ignoreMOs = false; + protected String alphaBeta = ""; final protected int HEADER_GAMESS_UK_MO = 3; final protected int HEADER_GAMESS_OCCUPANCIES = 2; @@ -127,12 +128,17 @@ while (line != null && continuing) if (checkLine()) readLine(); + finalizeMoReader(); } catch (Exception e) { return setError(e); } return atomSetCollection; } + protected void finalizeMoReader() { + // see subclasses + } + private void initializeMoReader(BufferedReader reader, String type) { this.reader = reader; atomSetCollection = new AtomSetCollection("type"); @@ -152,7 +158,7 @@ return true; boolean isOK = true; int nOK = 0; - line = line.toLowerCase(); + line = line.toLowerCase() + " " + alphaBeta; if (filterTokens == null) { filterIsNot = (filter.indexOf("!") >= 0); filterTokens = getTokens(filter.replace('!', ' ').replace(',', ' ') @@ -339,6 +345,11 @@ } if (line.indexOf("end") >= 0) break; + if (line.indexOf(" ALPHA SET ") >= 0) + alphaBeta = "alpha"; + else if (line.indexOf(" BETA SET ") >= 0) + alphaBeta = "beta"; + //not everyone has followed the conventions for ending a section of output if (line.length() == 0 || line.indexOf("--") >= 0 || line.indexOf(".....") >=0 || line.indexOf("NBO BASIS") >= 0 // reading NBOs @@ -364,7 +375,9 @@ } } mos[iMo].put("coefficients", coefs); - if (moTypes != null && moCount < moTypes.size()) + if (alphaBeta.length() > 0) + mos[iMo].put("type", alphaBeta); + else if (moTypes != null && moCount < moTypes.size()) mos[iMo].put("type", moTypes.get(moCount++)); orbitals.addElement(mos[iMo]); } @@ -398,7 +411,7 @@ line = ""; } energyUnits = "a.u."; - setMOData(true); + setMOData(!alphaBeta.equals("alpha")); } protected void getMOHeader(int headerType, String[] tokens, Hashtable[] mos, int nThisLine) @@ -467,6 +480,7 @@ if (clearOrbitals) { orbitals = new Vector(); moData = new Hashtable(); + alphaBeta = ""; } } Modified: trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java 2009-06-23 16:47:08 UTC (rev 11084) +++ trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java 2009-06-23 16:47:45 UTC (rev 11085) @@ -243,7 +243,7 @@ String s = (String) super.getProperty("list", param); if (s.length() > 1) s += "cutoff = " + super.getProperty("cutoff", 0) + "\n"; - return s; + return viewer.getMoInfo(-1) + "\n" + s; } if (propertyName == "moNumber") return new Integer(moNumber); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-06-23 16:47:08 UTC (rev 11084) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-06-23 16:47:45 UTC (rev 11085) @@ -3,16 +3,14 @@ version=11.7.44_dev +# new feature: MO LIST or SHOW MO LIST display listing of orbitals for all files +# new feature: GAMESS reader now sets calculationType, orbital type, and auxiliaryInfo.calculationOptions # bug fix: select(x;{xxx};...) or for(x;{xxx};...) when {xxx} is empty returns incorrect result # bug fix: dipoles cannot be colored by name # bug fix: dipole settings not accessible via wildcards # new feature: merging of label() and format() functions -- same in all respects. # bug fix: spartan'08 reader not reading vibrations -# bug fix: GAMESS reader now ignores orbitals in UHF calculations as it does not yet read them properly. -# Added appropriate logger message. Will replace once fixed. -# new feature: show mo energies -- lists molecular orbitals for all files. - # ----------------------------------------------------------------------------- #version=11.7.43 Modified: trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java 2009-06-23 16:47:08 UTC (rev 11084) +++ trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java 2009-06-23 16:47:45 UTC (rev 11085) @@ -9892,7 +9892,7 @@ "jvxlFileData"); break; case Token.mo: - if (optParameterAsString(2).equalsIgnoreCase("energies")) { + if (optParameterAsString(2).equalsIgnoreCase("list")) { msg = viewer.getMoInfo(-1); len = 3; } else { Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2009-06-23 16:47:08 UTC (rev 11084) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2009-06-23 16:47:45 UTC (rev 11085) @@ -515,7 +515,7 @@ private static String copyBinaryFile(String fullPathName, String dataPath) { String name = fullPathName.substring(fullPathName.lastIndexOf('/') + 1); name = dataPath + "/" + name; - String gzname = name.concat(".gz"); + String gzname = name + ".gz"; File outFile = new File(name); File gzoutFile = new File(gzname); if (outFile.exists()) @@ -563,7 +563,7 @@ private static String writeFileBytes(String path, byte[] data) { try { if (data.length>=524288 && !path.endsWith("JmolApplet.jar") ){ //gzip it - path = path.concat(".gz"); + path += ".gz"; GZIPOutputStream gzFile = new GZIPOutputStream(new FileOutputStream(path)); gzFile.write(data); LogPanel.log(" ..." + GT._("compressing large data file to") + "\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |