Revision: 21680
          http://sourceforge.net/p/jmol/code/21680
Author:   hansonr
Date:     2017-07-27 13:42:02 +0000 (Thu, 27 Jul 2017)
Log Message:
-----------
Jmol.___JmolVersion="14.20.4"

bug fix: SpartanSMOL reader for iSpartan files does not read charges or 
vibrational mode data

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanArchive.java
    trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanReader.java
    trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanSmolReader.java
    trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java

Modified: trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanArchive.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanArchive.java 
2017-07-27 13:15:02 UTC (rev 21679)
+++ trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanArchive.java 
2017-07-27 13:42:02 UTC (rev 21680)
@@ -51,6 +51,7 @@
   
 
   private int modelCount = 0;
+  private int modelAtomCount = 0;  
   private int ac = 0;
   private String bondData; // not in archive; may or may not have
   private int moCount = 0;
@@ -62,8 +63,9 @@
   
   private BasisFunctionReader r;
 
-  SpartanArchive(BasisFunctionReader r, String bondData, String endCheck) {
+  SpartanArchive(BasisFunctionReader r, String bondData, String endCheck, int 
smolAtomCount) {
     initialize(r, bondData);
+    this.modelAtomCount = smolAtomCount;
     this.endCheck = endCheck;
     isSMOL = (endCheck != null);
   }
@@ -130,8 +132,6 @@
     r.asc.setAtomSetEnergy(tokens[0], value);
   }
 
-  int modelAtomCount;
-  
   private int setInfo(String info) throws Exception {
     //    5  17  11  18   0   1  17   0 RHF      3-21G(d)           NOOPT FREQ
     //    0   1  2   3    4   5   6   7  8        9

Modified: trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanReader.java  
2017-07-27 13:15:02 UTC (rev 21679)
+++ trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanReader.java  
2017-07-27 13:42:02 UTC (rev 21680)
@@ -47,7 +47,7 @@
     String cartesianHeader = "Cartesian Coordinates (Ang";
     if (isSpartanArchive(cartesianHeader)) {
       moData = new Hashtable<String, Object>();
-      SpartanArchive spartanArchive = new SpartanArchive(this, "", null);
+      SpartanArchive spartanArchive = new SpartanArchive(this, "", null, 0);
       int ac = spartanArchive.readArchive(line, true, 0, true);
       if (ac > 0)
         asc.setAtomSetName("Spartan file");

Modified: trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanSmolReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanSmolReader.java      
2017-07-27 13:15:02 UTC (rev 21679)
+++ trunk/Jmol/src/org/jmol/adapter/readers/spartan/SpartanSmolReader.java      
2017-07-27 13:42:02 UTC (rev 21680)
@@ -163,10 +163,6 @@
         return false;
       } else if (lcline.endsWith("proparc")
           || lcline.endsWith("propertyarchive")) {
-        if (spartanArchive == null) {
-          spartanArchive = new SpartanArchive(this, bondData, endCheck);
-          spartanArchive.modelAtomCount = asc.getAtomSetAtomCount(asc.iSet);
-        }
         readProperties();
         return false;
       } else if (lcline.endsWith("archive")) {
@@ -246,7 +242,7 @@
   }
 
   private String readArchive() throws Exception {
-    spartanArchive = new SpartanArchive(this, bondData, endCheck);
+    spartanArchive = new SpartanArchive(this, bondData, endCheck, 0);
     String modelName = readArchiveHeader();
     if (modelName != null)
       modelAtomCount = spartanArchive.readArchive(line, false, asc.ac, false);
@@ -266,10 +262,13 @@
   }
 
   private void readProperties() throws Exception {
-    if (spartanArchive == null) {
+    if (modelAtomCount == 0) {
       rd();
       return;
     }
+    if (spartanArchive == null)
+      spartanArchive = new SpartanArchive(this, bondData, endCheck,
+          modelAtomCount);
     spartanArchive.readProperties();
     rd();
     setCharges();

Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java      
2017-07-27 13:15:02 UTC (rev 21679)
+++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java      
2017-07-27 13:42:02 UTC (rev 21680)
@@ -738,8 +738,9 @@
     if (!atomSetInfo.containsKey(auxKey))
       return false;
     Lst<Float> atomData = (Lst<Float>) atomSetInfo.get(auxKey);
-    for (int i = atomData.size(); --i >= 0;)
-      atoms[i].partialCharge = atomData.get(i).floatValue();
+    int n = atomData.size();
+    for (int i = ac; --i >= 0;)
+      atoms[i].partialCharge = atomData.get(i % n).floatValue();
     Logger.info("Setting partial charges type " + auxKey);
     return true;
   }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to