--- trunk/OOPSE/libmdtools/ZconsVisitor.cpp 2004/04/28 22:06:29 1139 +++ trunk/OOPSE/libmdtools/ZconsVisitor.cpp 2004/04/28 22:34:02 1140 @@ -112,7 +112,7 @@ ZConsVisitor::ZConsVisitor(SimInfo* info) : BaseVisito } } - zconsReader = new ZConsReader(zconsFilename); + zconsReader = new ZConsReader(info); if (zconsReader->hasNextFrame()) zconsReader->readNextFrame(); @@ -153,7 +153,7 @@ Molecule* ZConsVisitor::findZconsMol(int index){ Molecule* mols; mols = info->molecules; for(int i =0; i < info->n_mol; i++) - if(index = mols[i].getMyIndex()) + if(index == mols[i].getMyIndex()) return &mols[i]; return NULL; @@ -180,7 +180,7 @@ void ZConsVisitor::update(){ natoms = zconsMol[i]->getNAtoms(); atoms = zconsMol[i]->getMyAtoms(); for(int j =0; j < natoms; j++) - zconsState[atoms[i]->getIndex()] = state; + zconsState[atoms[j]->getIndex()] = state; } } @@ -193,12 +193,14 @@ void ZConsVisitor::getZconsPos(double time){ while(true){ tempTime = zconsReader->getCurTime(); - + + zconsPos = zconsReader->getZConsPos(); + if(tempTime >= time) return; zconsReader->readNextFrame(); - zconsPos = zconsReader->getZConsPos(); + } } @@ -209,26 +211,29 @@ void ZConsVisitor::internalVisit(StuntDouble* sd, cons AtomInfo* atomInfo; vector::iterator iter; + //if there is not atom data, just skip it data = sd->getProperty("ATOMDATA"); - if(data != NULL) + if(data != NULL){ atomData = dynamic_cast(data); if(atomData == NULL) return; + } else return; for(atomInfo = atomData->beginAtomInfo(iter); atomInfo; atomInfo = atomData->nextAtomInfo(iter)) - atomInfo->AtomType = prefix + atomInfo->AtomType; + (atomInfo->AtomType).insert(0, prefix); } bool ZConsVisitor::isZconstraint(int index, string& prefix){ map::iterator i; - + string prefixString[] = {"ZF", "ZM"}; + i = zconsState.find(index); if(i !=zconsState.end()){ - prefix = (*i).second; + prefix = prefixString[(*i).second]; return true; } else{ @@ -247,7 +252,7 @@ const string ZConsVisitor::toString(){ sprintf(buffer ,"Visitor name: %s\n", visitorName.c_str()); result += buffer; - sprintf(buffer , "number of zconstraint molecule :%d\n", zconsMol.size()); + sprintf(buffer , "number of zconstraint molecule: %d\n", zconsMol.size()); result += buffer; sprintf(buffer , "zconstraint tolerance = %lf\n", zconsTol); @@ -260,7 +265,7 @@ const string ZConsVisitor::toString(){ result += buffer; for(size_t i = 0; i < zconsMol.size(); ++i){ - sprintf(buffer ,"zconstraint molecule[%d] = \n", zconsMol[i]->getMyIndex()); + sprintf(buffer ,"zconstraint molecule[%d] = %d\n", i, zconsMol[i]->getMyIndex()); result += buffer; }