From: <ha...@us...> - 2009-11-07 13:32:23
|
Revision: 11696 http://jmol.svn.sourceforge.net/jmol/?rev=11696&view=rev Author: hansonr Date: 2009-11-07 13:32:10 +0000 (Sat, 07 Nov 2009) Log Message: ----------- version=11.8.9_dev # bug fix: GAMESS reader not reading all vibrational frequencies Modified Paths: -------------- branches/v11_8/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java branches/v11_8/Jmol/src/org/jmol/viewer/Jmol.properties branches/v11_8/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java Modified: branches/v11_8/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java =================================================================== --- branches/v11_8/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java 2009-11-07 12:13:04 UTC (rev 11695) +++ branches/v11_8/Jmol/src/org/jmol/adapter/readers/more/GamessReader.java 2009-11-07 13:32:10 UTC (rev 11696) @@ -139,26 +139,26 @@ // now contains all atoms across all models (optimization steps). // We only want to set vetor data corresponding to new cloned // models and not interfere with the previous ones. - float[] xComponents = new float[5]; - float[] yComponents = new float[5]; - float[] zComponents = new float[5]; - float[] frequencies = new float[5]; + float[] xComponents = new float[10]; + float[] yComponents = new float[10]; + float[] zComponents = new float[10]; + float[] frequencies = new float[10]; discardLinesUntilContains("FREQUENCY:"); while (line != null && line.indexOf("FREQUENCY:") >= 0) { - int lineFreqCount = 0; + int frequencyCount = 0; String[] tokens = getTokens(); for (int i = 0; i < tokens.length; i++) { float frequency = parseFloat(tokens[i]); if (tokens[i].equals("I")) - frequencies[lineFreqCount - 1] = -frequencies[lineFreqCount - 1]; + frequencies[frequencyCount - 1] = -frequencies[frequencyCount - 1]; if (Float.isNaN(frequency)) continue; // may be "I" for imaginary - frequencies[lineFreqCount] = frequency; - lineFreqCount++; + frequencies[frequencyCount] = frequency; + frequencyCount++; if (Logger.debugging) { Logger.debug(totalFrequencyCount + " frequency=" + frequency); } - if (lineFreqCount == 5) + if (frequencyCount == frequencies.length) break; } String[] red_masses = null; @@ -171,7 +171,7 @@ if (line.indexOf("INTENS") >= 0) { intensities = getTokens(); } - for (int i = 0; i < lineFreqCount; i++) { + for (int i = 0; i < frequencyCount; i++) { ++totalFrequencyCount; // The last model should be cloned because we might // have done an optimization with HSSEND=.TRUE. @@ -181,11 +181,12 @@ atomSetCollection.setAtomSetProperty("Frequency", frequencies[i] + " cm-1"); if (red_masses != null) - atomSetCollection.setAtomSetProperty("Reduced Mass", red_masses[i + 2] - + " AMU"); + atomSetCollection.setAtomSetProperty("Reduced Mass", + red_masses[red_masses.length - frequencyCount + i] + " AMU"); if (intensities != null) - atomSetCollection.setAtomSetProperty("IR Intensity", intensities[i + 2] - + " D^2/AMU-Angstrom^2"); + atomSetCollection.setAtomSetProperty("IR Intensity", + intensities[intensities.length - frequencyCount + i] + + " D^2/AMU-Angstrom^2"); } Atom[] atoms = atomSetCollection.getAtoms(); @@ -196,15 +197,15 @@ for (int i = 0; i < atomCount; ++i) { atomIndex = index0 + i; readLine(); - readComponents(lineFreqCount, xComponents); + readComponents(frequencyCount, xComponents); readLine(); - readComponents(lineFreqCount, yComponents); + readComponents(frequencyCount, yComponents); readLine(); - readComponents(lineFreqCount, zComponents); + readComponents(frequencyCount, zComponents); //This loop applies the normal mode displacements //to atom i across all clones (frequencies) by finding //its position in atoms[]. - for (int j = 0; j < lineFreqCount; ++j) { + for (int j = 0; j < frequencyCount; ++j) { atomIndex += atomCount; Atom atom = atoms[atomIndex]; atom.vectorX = xComponents[j]; Modified: branches/v11_8/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v11_8/Jmol/src/org/jmol/viewer/Jmol.properties 2009-11-07 12:13:04 UTC (rev 11695) +++ branches/v11_8/Jmol/src/org/jmol/viewer/Jmol.properties 2009-11-07 13:32:10 UTC (rev 11696) @@ -4,6 +4,8 @@ version=11.8.9_dev +# bug fix: GAMESS reader not reading all vibrational frequencies + # ----------------------------------------------------------------------------- #version=11.8.8 Modified: branches/v11_8/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java =================================================================== --- branches/v11_8/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2009-11-07 12:13:04 UTC (rev 11695) +++ branches/v11_8/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2009-11-07 13:32:10 UTC (rev 11696) @@ -1529,7 +1529,7 @@ * */ public float[][] functionXY(String functionName, int nX, int nY) { - nX = Math.abs(nX); +/* nX = Math.abs(nX); nY = Math.abs(nY); float[][] f = new float[nX][nY]; //boolean isSecond = (functionName.indexOf("2") >= 0); @@ -1547,6 +1547,23 @@ } return f; // for user-defined isosurface functions (testing only -- bob hanson) + */ + + nX = Math.abs(nX); + nY = Math.abs(nY); + float[][] f = new float[nX][nY]; + boolean isSecond = (functionName.indexOf("2") >= 0); + + for (int i = nX; --i >= 0;) + for (int j = nY; --j >= 0;) { + f[i][j] = (isSecond ? (float) ((i + j - nX) / (2f)) : (float) Math + .sqrt(Math.abs(i * i + j * j)) / 2f); + //if (i < 10 && j < 10) + //System.out.println(" functionXY " + i + " " + j + " " + f[i][j]); + } + + return f; // for user-defined isosurface functions (testing only -- bob hanson) + } public float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |