Changes in / [8859b5:7f1b51]
- Files:
-
- 41 added
- 30 deleted
- 64 edited
Legend:
- Unmodified
- Added
- Removed
-
LinearAlgebra/src/LinearAlgebra/MatrixContent.cpp
r8859b5 r7f1b51 88 88 MatrixContent::MatrixContent(size_t _rows, size_t _columns, MatrixBaseCase) : 89 89 MatrixDimension(_rows,_columns), 90 free_content_on_exit( true)90 free_content_on_exit(false) 91 91 {} 92 92 -
LinearAlgebra/src/LinearAlgebra/MatrixContent.hpp
r8859b5 r7f1b51 189 189 { 190 190 ar & boost::serialization::base_object<MatrixDimension>(*this); 191 if (free_content_on_exit) 192 gsl_matrix_free(content); 191 193 content = gsl_matrix_calloc(getRows(), getColumns()); 192 194 ar & content->size1; -
LinearAlgebra/src/LinearAlgebra/RealSpaceMatrix.hpp
r8859b5 r7f1b51 179 179 void save(Archive & ar, const unsigned int version) const 180 180 { 181 ar & content;181 ar & *content; 182 182 } 183 183 template<class Archive> 184 184 void load(Archive & ar, const unsigned int version) 185 185 { 186 ar & content; 187 createViews(); 186 ar & *content; 188 187 } 189 188 BOOST_SERIALIZATION_SPLIT_MEMBER() -
LinearAlgebra/src/LinearAlgebra/VectorContent.cpp
r8859b5 r7f1b51 55 55 VectorDimension(0), 56 56 content(NULL), 57 free_content_on_exit( true)57 free_content_on_exit(false) 58 58 {} 59 59 … … 78 78 VectorContent::VectorContent(VectorBaseCase) : 79 79 VectorDimension(0), 80 content(NULL), 80 81 free_content_on_exit(false) 81 82 {} … … 112 113 VectorContent::VectorContent(const size_t _dimension, std::istream &inputstream) : 113 114 VectorDimension(_dimension), 114 content(NULL),115 115 free_content_on_exit(true) 116 116 { -
src/Actions/ActionQueue.cpp
r8859b5 r7f1b51 84 84 #endif 85 85 86 // free all actions contained in actionqueue 87 for (ActionQueue_t::iterator iter = actionqueue.begin(); !actionqueue.empty(); iter = actionqueue.begin()) { 88 delete *iter; 89 actionqueue.erase(iter); 90 } 86 clearQueue(); 91 87 92 88 delete history; … … 96 92 void ActionQueue::queueAction(const std::string &name, enum Action::QueryOptions state) 97 93 { 98 queueAction(AR->getActionByName(name), state); 99 } 100 101 void ActionQueue::queueAction(Action *_action, enum Action::QueryOptions state) 94 const Action * const registryaction = AR->getActionByName(name); 95 queueAction(registryaction, state); 96 } 97 98 void ActionQueue::queueAction(const Action * const _action, enum Action::QueryOptions state) 102 99 { 103 100 OBSERVE; … … 116 113 std::cerr << "Action " << *boost::get_error_info<ActionNameString>(e) << " has failed." << std::endl; 117 114 World::getInstance().setExitFlag(5); 118 actionqueue.clear(); 119 tempqueue.clear(); 115 clearQueue(); 116 lastActionOk = false; 117 std::cerr << "ActionQueue cleared." << std::endl; 118 } catch (std::exception &e) { 119 pushStatus("FAIL: General exception caught, aborting."); 120 World::getInstance().setExitFlag(134); 121 clearQueue(); 120 122 lastActionOk = false; 121 123 std::cerr << "ActionQueue cleared." << std::endl; … … 180 182 pushStatus("FAIL: Action "+*boost::get_error_info<ActionNameString>(e)+" has failed."); 181 183 World::getInstance().setExitFlag(5); 182 actionqueue.clear(); 183 tempqueue.clear(); 184 clearQueue(); 184 185 lastActionOk = false; 186 std::cerr << "ActionQueue cleared." << std::endl; 187 CurrentAction = (size_t)-1; 188 } catch (std::exception &e) { 189 pushStatus("FAIL: General exception caught, aborting."); 190 World::getInstance().setExitFlag(134); 191 clearQueue(); 185 192 std::cerr << "ActionQueue cleared." << std::endl; 186 193 CurrentAction = (size_t)-1; … … 302 309 } 303 310 311 void ActionQueue::clearQueue() 312 { 313 // free all actions contained in actionqueue 314 for (ActionQueue_t::iterator iter = actionqueue.begin(); 315 !actionqueue.empty(); iter = actionqueue.begin()) { 316 delete *iter; 317 actionqueue.erase(iter); 318 } 319 // free all actions contained in tempqueue 320 for (ActionQueue_t::iterator iter = tempqueue.begin(); 321 !tempqueue.empty(); iter = tempqueue.begin()) { 322 delete *iter; 323 tempqueue.erase(iter); 324 } 325 } 304 326 305 327 const ActionQueue::ActionTokens_t ActionQueue::getListOfActions() const -
src/Actions/ActionQueue.hpp
r8859b5 r7f1b51 32 32 void waitQueue(); 33 33 #endif 34 35 class CommandLineParser; 34 36 35 37 namespace MoleCuilder { … … 81 83 * \param state whether Actions needs to be filled via a Dialog or not 82 84 */ 83 void queueAction( Action *_action, enum Action::QueryOptions state = Action::Interactive);85 void queueAction(const Action * const _action, enum Action::QueryOptions state = Action::Interactive); 84 86 85 87 /** Returns the spawned action by token \a name. … … 167 169 //!> grant Action access to internal history functions. 168 170 friend class Action; 171 //!> grant CommandLineParser access to stop and clearQueue() 172 friend class ::CommandLineParser; 169 173 170 174 /** Wrapper function to add state to ActionHistory. … … 185 189 */ 186 190 void clear(); 191 192 /** Clears all actions currently present in the actionqueues. 193 * 194 */ 195 void clearQueue(); 187 196 188 197 #ifdef HAVE_ACTION_THREAD -
src/Actions/AnalysisAction/DipoleAngularCorrelationAction.cpp
r8859b5 r7f1b51 112 112 113 113 // free correlation map 114 delete (correlationmap);114 delete correlationmap; 115 115 116 116 // output binned map … … 122 122 123 123 // free binned map 124 delete (binmap);124 delete binmap; 125 125 } 126 126 -
src/Actions/AnalysisAction/DipoleCorrelationAction.cpp
r8859b5 r7f1b51 73 73 binmap = BinData( correlationmap, params.BinWidth.get(), params.BinStart.get(), params.BinEnd.get() ); 74 74 OutputCorrelationMap<BinPairMap> ( &binoutput, binmap, OutputCorrelation_Header, OutputCorrelation_Value ); 75 delete (binmap);76 delete (correlationmap);75 delete binmap; 76 delete correlationmap; 77 77 output.close(); 78 78 binoutput.close(); -
src/Actions/AnalysisAction/PairCorrelationAction.cpp
r8859b5 r7f1b51 85 85 binmap = BinData( correlationmap, params.BinWidth.get(), params.BinStart.get(), params.BinEnd.get() ); 86 86 OutputCorrelationMap<BinPairMap> ( &binoutput, binmap, OutputCorrelation_Header, OutputCorrelation_Value ); 87 delete (binmap);88 delete (correlationmap);87 delete binmap; 88 delete correlationmap; 89 89 output.close(); 90 90 binoutput.close(); -
src/Actions/AnalysisAction/PointCorrelationAction.cpp
r8859b5 r7f1b51 79 79 binmap = BinData( correlationmap, params.BinWidth.get(), params.BinStart.get(), params.BinEnd.get() ); 80 80 OutputCorrelationMap<BinPairMap> ( &binoutput, binmap, OutputCorrelation_Header, OutputCorrelation_Value ); 81 delete (binmap);82 delete (correlationmap);81 delete binmap; 82 delete correlationmap; 83 83 output.close(); 84 84 binoutput.close(); -
src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp
r8859b5 r7f1b51 115 115 OutputCorrelationMap<BinPairMap> ( &binoutput, binmap, OutputCorrelation_Header, OutputCorrelation_Value ); 116 116 delete TesselStruct; // surfacemap contains refs to triangles! delete here, not earlier! 117 delete (binmap);118 delete (surfacemap);117 delete binmap; 118 delete surfacemap; 119 119 output.close(); 120 120 binoutput.close(); -
src/Actions/CommandAction/ElementDbAction.cpp
r8859b5 r7f1b51 67 67 boost::archive::text_oarchive oa(undostream); 68 68 oa << periode; 69 CommandElementDbState *UndoState =70 new CommandElementDbState(71 undostream.str(),72 params73 );74 69 75 70 // get the path … … 83 78 STATUS("Element list loaded successfully."); 84 79 //periode->Output(); 85 return ActionState::ptr( UndoState);80 return ActionState::ptr(new CommandElementDbState(undostream.str(),params)); 86 81 } else { 87 82 STATUS("Element list loading failed."); 88 delete UndoState;89 83 return Action::failure; 90 84 } -
src/Actions/FillAction/FillRegularGridAction.cpp
r8859b5 r7f1b51 44 44 #include "Filling/Cluster.hpp" 45 45 #include "Filling/Filler.hpp" 46 #include "Filling/Inserter/Inserter.hpp" 47 #include "Filling/Inserter/RandomInserter.hpp" 48 #include "Filling/Mesh/CubeMesh.hpp" 49 #include "Filling/Predicates/IsInsideSurface_FillPredicate.hpp" 50 #include "Filling/Predicates/IsVoidNode_FillPredicate.hpp" 51 #include "Filling/Predicates/Ops_FillPredicate.hpp" 52 #include "LinkedCell/linkedcell.hpp" 53 #include "LinkedCell/PointCloudAdaptor.hpp" 46 #include "Filling/Preparators/BoxFillerPreparator.hpp" 54 47 #include "molecule.hpp" 55 48 #include "MoleculeListClass.hpp" 56 49 #include "Parser/FormatParserInterface.hpp" 57 50 #include "Parser/FormatParserStorage.hpp" 58 #include "Shapes/BaseShapes.hpp"59 #include "Tesselation/tesselation.hpp"60 #include "Tesselation/BoundaryLineSet.hpp"61 #include "Tesselation/BoundaryTriangleSet.hpp"62 #include "Tesselation/CandidateForTesselation.hpp"63 51 #include "World.hpp" 64 65 52 66 53 #include <algorithm> … … 92 79 LOG(1, "INFO: Chosen molecule has " << filler->size() << " atoms."); 93 80 94 // c heck for selected molecules and create surfaces from them95 std::vector<atom *> atoms(World::getInstance().getSelectedAtoms());96 FillPredicate * surface_predicate = NULL; 97 LinkedCell_deprecated * LC = NULL;98 Tesselation * TesselStruct = NULL;81 // center filler's tip at origin 82 filler->CenterEdge(); 83 84 // prepare the filler preparator 85 BoxFillerPreparator filler_preparator(filler); 99 86 if (params.SphereRadius.get() != 0.) { 100 if ( atoms.size() == 0) {87 if (World::getInstance().beginAtomSelection() == World::getInstance().endAtomSelection()) { 101 88 STATUS("You have given a sphere radius "+toString(params.SphereRadius.get()) 102 89 +" != 0, but have not select any atoms."); 103 90 return Action::failure; 104 91 } 105 // create adaptor for the selected atoms 106 PointCloudAdaptor< std::vector<atom *> > cloud(&atoms, std::string("Selected atoms")); 107 108 // create tesselation 109 LC = new LinkedCell_deprecated(cloud, 2.*params.SphereRadius.get()); 110 TesselStruct = new Tesselation; 111 (*TesselStruct)(cloud, params.SphereRadius.get()); 112 113 // and create predicate 114 surface_predicate = new FillPredicate( IsInsideSurface_FillPredicate( *TesselStruct, *LC ) ); 115 } 116 117 // create predicate, mesh, and filler 92 std::vector<atom*> atoms(World::getInstance().getSelectedAtoms()); 93 filler_preparator.addSurfacePredicate( 94 params.SphereRadius.get(), 95 atoms); 96 } 97 filler_preparator.addVoidPredicate(params.mindistance.get()); 98 filler_preparator.addRandomInserter( 99 params.RandAtomDisplacement.get(), 100 params.RandMoleculeDisplacement.get(), 101 params.DoRotate.get()); 102 filler_preparator.addCubeMesh( 103 params.counts.get(), 104 params.offset.get(), 105 World::getInstance().getDomain().getM()); 106 if (!filler_preparator()) { 107 STATUS("Filler was not fully constructed."); 108 return Action::failure; 109 } 110 111 // use filler 112 bool successflag = false; 118 113 FillRegularGridState *UndoState = NULL; 119 bool successflag = false;120 114 { 121 FillPredicate *voidnode_predicate = new FillPredicate(122 IsVoidNode_FillPredicate(123 Sphere(zeroVec, params.mindistance.get())124 )125 );126 FillPredicate Andpredicate = (*voidnode_predicate);127 if (surface_predicate != NULL)128 Andpredicate = (Andpredicate) && !(*surface_predicate);129 Mesh *mesh = new CubeMesh(params.counts.get(), params.offset.get(), World::getInstance().getDomain().getM());130 Inserter *inserter = new Inserter(131 Inserter::impl_ptr(132 new RandomInserter(133 params.RandAtomDisplacement.get(),134 params.RandMoleculeDisplacement.get(),135 params.DoRotate.get())136 )137 );138 139 115 // fill 140 { 141 Filler *fillerFunction = new Filler(*mesh, Andpredicate, *inserter); 142 // TODO: When molecule::getBoundingSphere() does not use a sphere anymore, 143 // we need to check whether we rotate the molecule randomly. For this to 144 // work we need a sphere! 145 const Shape s = filler->getBoundingSphere(params.RandAtomDisplacement.get()); 146 ClusterInterface::Cluster_impl cluster( new Cluster(filler->getAtomIds(), s) ); 147 CopyAtoms_withBonds copyMethod; 148 Filler::ClusterVector_t ClonedClusters; 149 successflag = (*fillerFunction)(copyMethod, cluster, ClonedClusters); 150 delete fillerFunction; 151 152 // append each cluster's atoms to clonedatoms (however not selected ones) 153 std::vector<const atom *> clonedatoms; 154 std::vector<AtomicInfo> clonedatominfos; 155 for (Filler::ClusterVector_t::const_iterator iter = ClonedClusters.begin(); 156 iter != ClonedClusters.end(); ++iter) { 157 const AtomIdSet &atoms = (*iter)->getAtomIds(); 158 clonedatoms.reserve(clonedatoms.size()+atoms.size()); 159 for (AtomIdSet::const_iterator atomiter = atoms.begin(); atomiter != atoms.end(); ++atomiter) 160 if (!filler->containsAtom(*atomiter)) { 161 clonedatoms.push_back( *atomiter ); 162 clonedatominfos.push_back( AtomicInfo(*(*atomiter)) ); 163 } 164 } 165 std::vector< BondInfo > clonedbonds; 166 StoreBondInformationFromAtoms(clonedatoms, clonedbonds); 167 LOG(2, "DEBUG: There are " << clonedatominfos.size() << " newly created atoms."); 168 169 if (!successflag) { 170 STATUS("Insertion failed, removing inserted clusters, translating original one back"); 171 RemoveAtomsFromAtomicInfo(clonedatominfos); 172 clonedatoms.clear(); 173 SetAtomsFromAtomicInfo(movedatoms); 174 } else { 175 std::vector<Vector> MovedToVector(filler->size(), zeroVec); 176 std::transform(filler->begin(), filler->end(), MovedToVector.begin(), 177 boost::bind(&AtomInfo::getPosition, _1) ); 178 UndoState = new FillRegularGridState(clonedatominfos,clonedbonds,movedatoms,MovedToVector,params); 179 } 116 Filler *fillerFunction = filler_preparator.obtainFiller(); 117 // TODO: When molecule::getBoundingSphere() does not use a sphere anymore, 118 // we need to check whether we rotate the molecule randomly. For this to 119 // work we need a sphere! 120 const Shape s = filler->getBoundingSphere(params.RandAtomDisplacement.get()); 121 ClusterInterface::Cluster_impl cluster( new Cluster(filler->getAtomIds(), s) ); 122 CopyAtoms_withBonds copyMethod; 123 Filler::ClusterVector_t ClonedClusters; 124 successflag = (*fillerFunction)(copyMethod, cluster, ClonedClusters); 125 delete fillerFunction; 126 127 // append each cluster's atoms to clonedatoms (however not selected ones) 128 std::vector<const atom *> clonedatoms; 129 std::vector<AtomicInfo> clonedatominfos; 130 for (Filler::ClusterVector_t::const_iterator iter = ClonedClusters.begin(); 131 iter != ClonedClusters.end(); ++iter) { 132 const AtomIdSet &atoms = (*iter)->getAtomIds(); 133 clonedatoms.reserve(clonedatoms.size()+atoms.size()); 134 for (AtomIdSet::const_iterator atomiter = atoms.begin(); atomiter != atoms.end(); ++atomiter) 135 if (!filler->containsAtom(*atomiter)) { 136 clonedatoms.push_back( *atomiter ); 137 clonedatominfos.push_back( AtomicInfo(*(*atomiter)) ); 138 } 180 139 } 181 182 // remove 183 delete mesh; 184 delete inserter; 185 delete voidnode_predicate; 186 delete surface_predicate; 187 delete LC; 188 delete TesselStruct; 140 std::vector< BondInfo > clonedbonds; 141 StoreBondInformationFromAtoms(clonedatoms, clonedbonds); 142 LOG(2, "DEBUG: There are " << clonedatominfos.size() << " newly created atoms."); 143 144 if (!successflag) { 145 STATUS("Insertion failed, removing inserted clusters, translating original one back"); 146 RemoveAtomsFromAtomicInfo(clonedatominfos); 147 clonedatoms.clear(); 148 SetAtomsFromAtomicInfo(movedatoms); 149 } else { 150 std::vector<Vector> MovedToVector(filler->size(), zeroVec); 151 std::transform(filler->begin(), filler->end(), MovedToVector.begin(), 152 boost::bind(&AtomInfo::getPosition, _1) ); 153 UndoState = new FillRegularGridState(clonedatominfos,clonedbonds,movedatoms,MovedToVector,params); 154 } 189 155 } 190 156 -
src/Actions/FillAction/FillSurfaceAction.cpp
r8859b5 r7f1b51 46 46 #include "Filling/Mesh/MeshAdaptor.hpp" 47 47 #include "Filling/Predicates/IsVoidNode_FillPredicate.hpp" 48 #include "Filling/Preparators/ShapeSurfaceFillerPreparator.hpp" 48 49 #include "molecule.hpp" 49 50 #include "Shapes/BaseShapes.hpp" 50 51 #include "Shapes/ShapeRegistry.hpp" 52 #include "Shapes/ShapeType.hpp" 51 53 #include "World.hpp" 52 54 … … 81 83 82 84 // center filler's tip at origin 83 Vector max; 84 filler->CenterEdge(&max); 85 filler->CenterEdge(); 85 86 86 87 // determine center with respect to alignment axis … … 96 97 { 97 98 Vector translater = -1.*sum; 98 filler->Translate(&translater); 99 } 100 101 // create predicate, mesh, and filler 102 FillSurfaceState *UndoState = NULL; 103 bool successflag = false; 104 { 105 FillPredicate *voidnode_predicate = new FillPredicate( 106 IsVoidNode_FillPredicate( 107 Sphere(zeroVec, params.mindistance.get()) 108 ) 109 ); 110 111 112 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes(); 113 if (selectedShapes.size() != 1){ 114 STATUS("There has to be exactly 1 selected shape."); 99 filler->Translate(translater); 100 } 101 102 // prepare the filler preparator 103 if (ShapeRegistry::getInstance().countSelectedShapes() != (size_t)1) { 104 STATUS("Not exactly one shape selected."); 105 return Action::failure; 106 } 107 const std::vector<Shape*> shapes = ShapeRegistry::getInstance().getSelectedShapes(); 108 const Shape &shape = **shapes.begin(); 109 110 // hard check whether shape is of allowed type, not all are implemented 111 // but these only fail with an assertion, hence not with disable-debug 112 switch (shape.getType()) { 113 case NowhereType: 114 case EverywhereType: 115 STATUS("The shape type "+toString(shape.getType())+" is currently not supported."); 116 return Action::failure; 117 break; 118 default: 119 break; 120 } 121 122 ShapeSurfaceFillerPreparator filler_preparator(filler); 123 if (params.SphereRadius.get() != 0.) { 124 if (World::getInstance().beginAtomSelection() == World::getInstance().endAtomSelection()) { 125 STATUS("You have given a sphere radius "+toString(params.SphereRadius.get()) 126 +" != 0, but have not select any atoms."); 115 127 return Action::failure; 116 128 } 117 118 boost::function<const NodeSet ()> func = 119 boost::bind(&Shape::getHomogeneousPointsOnSurface, boost::ref(*selectedShapes[0]), params.N.get()); 120 Mesh *mesh = new MeshAdaptor(func); 121 Inserter *inserter = new Inserter( 122 Inserter::impl_ptr(new SurfaceInserter(*selectedShapes[0], params.AlignedAxis.get()))); 123 129 std::vector<atom*> atoms(World::getInstance().getSelectedAtoms()); 130 filler_preparator.addSurfacePredicate( 131 params.SphereRadius.get(), 132 atoms); 133 } 134 filler_preparator.addVoidPredicate(params.mindistance.get()); 135 filler_preparator.addSurfaceRandomInserter( 136 shape, 137 params.AlignedAxis.get(), 138 params.RandAtomDisplacement.get(), 139 params.RandMoleculeDisplacement.get()); 140 filler_preparator.addShapeMesh( 141 shape, 142 params.N.get()); 143 if (!filler_preparator()) { 144 STATUS("Filler was not fully constructed."); 145 return Action::failure; 146 } 147 148 // use filler 149 bool successflag = false; 150 FillSurfaceState *UndoState = NULL; 151 { 124 152 // fill 125 153 { 126 Filler *fillerFunction = new Filler(*mesh, *voidnode_predicate, *inserter);154 Filler *fillerFunction = filler_preparator.obtainFiller(); 127 155 ClusterInterface::Cluster_impl cluster( new Cluster( filler->getAtomIds(), filler->getBoundingSphere() ) ); 128 156 CopyAtoms_withBonds copyMethod; … … 161 189 } 162 190 } 163 164 // remove165 delete mesh;166 delete inserter;167 delete voidnode_predicate;168 191 } 169 192 -
src/Actions/FillAction/FillSurfaceAction.def
r8859b5 r7f1b51 20 20 // ValueStorage by the token "Z" -> first column: int, Z, "Z" 21 21 // "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value 22 #define paramtypes (unsigned int)(double)( Vector)23 #define paramtokens ("count")("min-distance")(" Alignment-Axis")24 #define paramdescriptions ("number of instances to be added, changed according to geometric needs")("minimum distance between added instances")(" The filler molecule is rotated relative to this alignment axis")25 #define paramdefaults (PARAM_DEFAULT(12))(PARAM_DEFAULT(1.))( NOPARAM_DEFAULT)26 #define paramreferences (N)(mindistance)( AlignedAxis)22 #define paramtypes (unsigned int)(double)(double)(double)(double)(Vector) 23 #define paramtokens ("count")("min-distance")("tesselation-radius")("random-atom-displacement")("random-molecule-displacement")("Alignment-Axis") 24 #define paramdescriptions ("number of instances to be added, changed according to geometric needs")("minimum distance between added instances")("radius of rolling sphere in tesselating selected molecule's surfaces")("magnitude of random atom displacement")("magnitude of random molecule displacement")("The filler molecule is rotated relative to this alignment axis") 25 #define paramdefaults (PARAM_DEFAULT(12))(PARAM_DEFAULT(1.))(PARAM_DEFAULT(0.))(PARAM_DEFAULT(0.))(PARAM_DEFAULT(0.))(NOPARAM_DEFAULT) 26 #define paramreferences (N)(mindistance)(SphereRadius)(RandAtomDisplacement)(RandMoleculeDisplacement)(AlignedAxis) 27 27 #define paramvalids \ 28 28 (DummyValidator< unsigned int >()) \ 29 (BoxLengthValidator()) \ 30 (BoxLengthValidator()) \ 31 (BoxLengthValidator()) \ 29 32 (BoxLengthValidator()) \ 30 33 (VectorNotZeroValidator()) … … 36 39 #define CATEGORY Fill 37 40 #define MENUNAME "fill" 38 #define MENUPOSITION 141 #define MENUPOSITION 2 39 42 #define ACTIONNAME Surface 40 43 #define TOKEN "fill-surface" -
src/Actions/GlobalListOfActions.hpp
r8859b5 r7f1b51 50 50 (FillRegularGrid) \ 51 51 (FillSurface) \ 52 (FillSuspendInMolecule) \ 53 (FillVolume) \ 52 54 (FragmentationAnalyseFragmentationResults) \ 53 55 (FragmentationClearFragmentationResults) \ … … 68 70 (MoleculeChangeBondAngle) \ 69 71 (MoleculeCopy) \ 70 (MoleculeFillWithMolecule) \71 (MoleculeFillVoidWithMolecule) \72 72 (MoleculeForceAnnealing) \ 73 73 (MoleculeLinearInterpolationofTrajectories) \ … … 80 80 (MoleculeSaveTemperature) \ 81 81 (MoleculeStretchBond) \ 82 (MoleculeSuspendInWater) \83 82 (MoleculeVerletIntegration) \ 84 83 (PotentialFitParticleCharges) \ -
src/Actions/Makefile.am
r8859b5 r7f1b51 215 215 FILLACTIONSOURCE = \ 216 216 Actions/FillAction/FillRegularGridAction.cpp \ 217 Actions/FillAction/FillSurfaceAction.cpp 217 Actions/FillAction/FillSurfaceAction.cpp \ 218 Actions/FillAction/SuspendInMoleculeAction.cpp \ 219 Actions/FillAction/FillVolumeAction.cpp 218 220 FILLACTIONHEADER = \ 219 221 Actions/FillAction/FillRegularGridAction.hpp \ 220 Actions/FillAction/FillSurfaceAction.hpp 222 Actions/FillAction/FillSurfaceAction.hpp \ 223 Actions/FillAction/SuspendInMoleculeAction.hpp \ 224 Actions/FillAction/FillVolumeAction.hpp 221 225 FILLACTIONDEFS = \ 222 226 Actions/FillAction/FillRegularGridAction.def \ 223 Actions/FillAction/FillSurfaceAction.def 227 Actions/FillAction/FillSurfaceAction.def \ 228 Actions/FillAction/SuspendInMoleculeAction.def \ 229 Actions/FillAction/FillVolumeAction.def 224 230 225 231 … … 279 285 Actions/MoleculeAction/ChangeNameAction.cpp \ 280 286 Actions/MoleculeAction/CopyAction.cpp \ 281 Actions/MoleculeAction/FillWithMoleculeAction.cpp \282 Actions/MoleculeAction/FillVoidWithMoleculeAction.cpp \283 287 Actions/MoleculeAction/ForceAnnealingAction.cpp \ 284 288 Actions/MoleculeAction/LinearInterpolationofTrajectoriesAction.cpp \ … … 291 295 Actions/MoleculeAction/SaveTemperatureAction.cpp \ 292 296 Actions/MoleculeAction/StretchBondAction.cpp \ 293 Actions/MoleculeAction/SuspendInWaterAction.cpp \294 297 Actions/MoleculeAction/VerletIntegrationAction.cpp 295 298 MOLECULEACTIONHEADER = \ … … 298 301 Actions/MoleculeAction/ChangeNameAction.hpp \ 299 302 Actions/MoleculeAction/CopyAction.hpp \ 300 Actions/MoleculeAction/FillWithMoleculeAction.hpp \301 Actions/MoleculeAction/FillVoidWithMoleculeAction.hpp \302 303 Actions/MoleculeAction/ForceAnnealingAction.hpp \ 303 304 Actions/MoleculeAction/LinearInterpolationofTrajectoriesAction.hpp \ … … 310 311 Actions/MoleculeAction/SaveTemperatureAction.hpp \ 311 312 Actions/MoleculeAction/StretchBondAction.hpp \ 312 Actions/MoleculeAction/SuspendInWaterAction.hpp \313 313 Actions/MoleculeAction/VerletIntegrationAction.hpp 314 314 MOLECULEACTIONDEFS = \ … … 317 317 Actions/MoleculeAction/ChangeNameAction.def \ 318 318 Actions/MoleculeAction/CopyAction.def \ 319 Actions/MoleculeAction/FillWithMoleculeAction.def \320 Actions/MoleculeAction/FillVoidWithMoleculeAction.def \321 319 Actions/MoleculeAction/ForceAnnealingAction.def \ 322 320 Actions/MoleculeAction/LinearInterpolationofTrajectoriesAction.def \ … … 329 327 Actions/MoleculeAction/SaveTemperatureAction.def \ 330 328 Actions/MoleculeAction/StretchBondAction.def \ 331 Actions/MoleculeAction/SuspendInWaterAction.def \332 329 Actions/MoleculeAction/VerletIntegrationAction.def 333 330 -
src/Actions/MoleculeAction/CopyAction.cpp
r8859b5 r7f1b51 63 63 iter != World::getInstance().endMoleculeSelection(); ++iter) { 64 64 molecule * const copy = (iter->second)->CopyMolecule(); 65 Vector *Center = (iter->second)->DetermineCenterOfAll();66 *Center *= -1.;67 *Center += params.position.get();65 Vector Center = (iter->second)->DetermineCenterOfAll(); 66 Center *= -1.; 67 Center += params.position.get(); 68 68 copy->Translate(Center); 69 delete(Center);70 69 molecules.push_back(copy->getId()); 71 70 } -
src/Actions/MoleculeAction/RotateAroundSelfByAngleAction.cpp
r8859b5 r7f1b51 74 74 75 75 // Creation Line that is the rotation axis 76 Vector *CenterOfGravity = mol->DetermineCenterOfGravity(); 77 LOG(0, "Center of gravity is " << *CenterOfGravity << "."); 78 Line RotationAxis(*CenterOfGravity, params.Axis.get()); 79 delete(CenterOfGravity); 76 const Vector CenterOfGravity = mol->DetermineCenterOfGravity(); 77 LOG(0, "Center of gravity is " << CenterOfGravity << "."); 78 Line RotationAxis(CenterOfGravity, params.Axis.get()); 80 79 LOG(0, "Rotate " << mol->getName() << " around self by " << params.angle.get() << " radian around axis " << RotationAxis << "."); 81 80 … … 93 92 94 93 BOOST_FOREACH(molecule *mol, state->selectedMolecules) { 95 Vector *CenterOfGravity = mol->DetermineCenterOfGravity(); 96 LOG(0, "Center of gravity is " << *CenterOfGravity << "."); 97 Line RotationAxis(*CenterOfGravity, state->params.Axis.get()); 98 delete(CenterOfGravity); 94 const Vector CenterOfGravity = mol->DetermineCenterOfGravity(); 95 LOG(0, "Center of gravity is " <<CenterOfGravity << "."); 96 Line RotationAxis(CenterOfGravity, state->params.Axis.get()); 99 97 LOG(0, "Rotate " << mol->getName() << " around self by " << -state->params.angle.get() << " radian around axis " << RotationAxis << "."); 100 98 … … 111 109 112 110 BOOST_FOREACH(molecule *mol, state->selectedMolecules) { 113 Vector *CenterOfGravity = mol->DetermineCenterOfGravity(); 114 LOG(0, "Center of gravity is " << *CenterOfGravity << "."); 115 Line RotationAxis(*CenterOfGravity, state->params.Axis.get()); 116 delete(CenterOfGravity); 111 const Vector CenterOfGravity = mol->DetermineCenterOfGravity(); 112 LOG(0, "Center of gravity is " << CenterOfGravity << "."); 113 Line RotationAxis(CenterOfGravity, state->params.Axis.get()); 117 114 LOG(0, "Rotate " << mol->getName() << " around self by " << state->params.angle.get() << " radian around axis " << RotationAxis << "."); 118 115 -
src/Actions/PotentialAction/FitPotentialAction.cpp
r8859b5 r7f1b51 93 93 LOG(2, "DEBUG: counts_per_charge is " << counts_per_charge << "."); 94 94 // we want to check each (unique) key only once 95 HomologyContainer::const_key_iterator olditer = homologies.key_end(); 96 for (HomologyContainer::const_key_iterator iter = 97 homologies.key_begin(); iter != homologies.key_end(); olditer = iter++) { 98 // if it's the same as the old one, skip it 99 if (*olditer == *iter) 100 continue; 101 // if it's a new key, check if every element has the right number of counts 95 for (HomologyContainer::const_key_iterator iter = homologies.key_begin(); 96 iter != homologies.key_end(); iter = homologies.getNextKey(iter)) { 97 // check if every element has the right number of counts 102 98 Extractors::elementcounts_t::const_iterator countiter = counts_per_charge.begin(); 103 99 for (; countiter != counts_per_charge.end(); ++countiter) -
src/Actions/Process.cpp
r8859b5 r7f1b51 52 52 Process::~Process() 53 53 { 54 // make sure everybody knows we have stoped 55 stop(); 54 // if active make sure everybody knows we have stopped 55 if (active) 56 stop(); 56 57 } 57 58 -
src/Analysis/analysis_correlation.cpp
r8859b5 r7f1b51 334 334 const LinkedCell::LinkedList intersected_atoms_set(intersected_atoms.begin(), intersected_atoms_end); 335 335 336 // create map337 outmap = new PairCorrelationMap;338 339 336 // get linked cell view 340 337 LinkedCell::LinkedCell_View LC = World::getInstance().getLinkedCell(max_distance); … … 411 408 } 412 409 413 outmap = new CorrelationToPointMap;414 410 for (std::vector<molecule *>::const_iterator MolWalker = molecules.begin(); MolWalker != molecules.end(); MolWalker++) { 415 411 LOG(2, "Current molecule is " << *MolWalker << "."); … … 456 452 } 457 453 458 outmap = new CorrelationToPointMap;459 454 for (std::vector<molecule *>::const_iterator MolWalker = molecules.begin(); MolWalker != molecules.end(); MolWalker++) { 460 455 RealSpaceMatrix FullMatrix = World::getInstance().getDomain().getM(); … … 510 505 } 511 506 512 outmap = new CorrelationToSurfaceMap;513 507 for (std::vector<molecule *>::const_iterator MolWalker = molecules.begin(); MolWalker != molecules.end(); MolWalker++) { 514 508 LOG(2, "Current molecule is " << (*MolWalker)->name << "."); … … 566 560 } 567 561 568 outmap = new CorrelationToSurfaceMap;569 562 double ShortestDistance = 0.; 570 563 BoundaryTriangleSet *ShortestTriangle = NULL; -
src/Analysis/unittests/CountBondsUnitTest.cpp
r8859b5 r7f1b51 148 148 void CountBondsTest::HydrogenBridgeBondsTest() 149 149 { 150 double *mirror = new double[3];150 double mirror[3]; 151 151 CPPUNIT_ASSERT(mirror != NULL && "could not create array of doubles"); 152 152 for (int i=0;i<3;i++) … … 161 161 cout << "Case 1: offset of (3,0,0), hence angles are (104.5, 0, 75.5, 180) < 30." << endl; 162 162 Translator = Vector(3,0,0); 163 TestMolecule1->Translate( &Translator);163 TestMolecule1->Translate(Translator); 164 164 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 165 165 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, oxygen, NULL) ); 166 166 Translator = Vector(-3,0,0); 167 TestMolecule1->Translate( &Translator);167 TestMolecule1->Translate(Translator); 168 168 169 169 cout << "Case 2: offset of (0,3,0), hence angle are (14.5, 165.5, 90) < 30 (only three, because other 90 is missing due to first H01 only fulfilling H-bond criteria)." << endl; 170 170 Translator = Vector(0,3,0); 171 TestMolecule1->Translate( &Translator);171 TestMolecule1->Translate(Translator); 172 172 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 173 173 Translator = Vector(0,-3,0); 174 TestMolecule1->Translate( &Translator);174 TestMolecule1->Translate(Translator); 175 175 176 176 cout << "Case 3: offset of (0,-3,0) and mirror, hence angle are (165.5, 90, 165.5, 90) > 30." << endl; 177 177 Translator = Vector(0,-3,0); 178 TestMolecule1->Scale( (const double ** const)&mirror);179 TestMolecule1->Translate( &Translator);178 TestMolecule1->Scale(&mirror[0]); 179 TestMolecule1->Translate(Translator); 180 180 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 181 181 Translator = Vector(0,3,0); 182 TestMolecule1->Translate( &Translator);183 TestMolecule1->Scale( (const double ** const)&mirror);182 TestMolecule1->Translate(Translator); 183 TestMolecule1->Scale(&mirror[0]); 184 184 185 185 cout << "Case 4: offset of (2,1,0), hence angle are (78, 26.6, 102, 153.4) < 30." << endl; 186 186 Translator = Vector(2,1,0); 187 TestMolecule1->Translate( &Translator);187 TestMolecule1->Translate(Translator); 188 188 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 189 189 Translator = Vector(-2,-1,0); 190 TestMolecule1->Translate( &Translator);190 TestMolecule1->Translate(Translator); 191 191 192 192 cout << "Case 5: offset of (0,0,3), hence angle are (90, 90, 90, 90) > 30." << endl; 193 193 Translator = Vector(0,0,3); 194 TestMolecule1->Translate( &Translator);194 TestMolecule1->Translate(Translator); 195 195 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 196 196 Translator = Vector(0,0,-3); 197 TestMolecule1->Translate( &Translator);197 TestMolecule1->Translate(Translator); 198 198 199 199 cout << "Case 6: offset of (-3,0,0) and mirror, hence angle are (75.5, 180, 104.5, 180) > 30." << endl; 200 200 Translator = Vector(-3,0,0); 201 TestMolecule1->Scale( (const double ** const)&mirror);202 TestMolecule1->Translate( &Translator);201 TestMolecule1->Scale(&mirror[0]); 202 TestMolecule1->Translate(Translator); 203 203 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 204 204 Translator = Vector(3,0,0); 205 TestMolecule1->Translate( &Translator);206 TestMolecule1->Scale( (const double ** const)&mirror);205 TestMolecule1->Translate(Translator); 206 TestMolecule1->Scale(&mirror[0]); 207 207 208 208 cout << "Case 7: offset of (3,0,0) and mirror, hence angles are (104.5, 0, 104.5, 0) < 30, but interfering hydrogens." << endl; 209 209 Translator = Vector(3,0,0); 210 TestMolecule1->Scale( (const double ** const)&mirror);211 TestMolecule1->Translate( &Translator);210 TestMolecule1->Scale(&mirror[0]); 211 TestMolecule1->Translate(Translator); 212 212 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 213 213 Translator = Vector(-3,0,0); 214 TestMolecule1->Translate( &Translator);215 TestMolecule1->Scale( (const double ** const)&mirror);214 TestMolecule1->Translate(Translator); 215 TestMolecule1->Scale(&mirror[0]); 216 216 217 217 cout << "Case 8: offset of (0,3,0), hence angle are (14.5, 90, 14.5, 90) < 30, but interfering hydrogens." << endl; 218 218 Translator = Vector(0,3,0); 219 TestMolecule1->Scale( (const double ** const)&mirror);220 TestMolecule1->Translate( &Translator);219 TestMolecule1->Scale(&mirror[0]); 220 TestMolecule1->Translate(Translator); 221 221 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 222 222 Translator = Vector(0,-3,0); 223 TestMolecule1->Translate(&Translator); 224 TestMolecule1->Scale((const double ** const)&mirror); 225 226 delete[](mirror); 227 }; 223 TestMolecule1->Translate(Translator); 224 TestMolecule1->Scale(&mirror[0]); 225 }; -
src/Box.cpp
r8859b5 r7f1b51 127 127 } 128 128 129 void Box::setM( RealSpaceMatrix_M){129 void Box::setM(const RealSpaceMatrix &_M){ 130 130 ASSERT(_M.determinant()!=0,"Matrix in Box construction was not invertible"); 131 131 OBSERVE; -
src/Box.hpp
r8859b5 r7f1b51 62 62 * Set the form of the parallelepiped. 63 63 */ 64 void setM( RealSpaceMatrix);64 void setM(const RealSpaceMatrix &_M); 65 65 66 66 Box &operator=(const Box&); -
src/Filling/Makefile.am
r8859b5 r7f1b51 13 13 Filling/Inserter/SimpleInserter.cpp \ 14 14 Filling/Inserter/SurfaceInserter.cpp \ 15 Filling/Inserter/SurfaceRandomInserter.cpp \ 15 16 Filling/Predicates/AnyFillPredicate.cpp \ 16 17 Filling/Predicates/FillPredicate.cpp \ … … 19 20 Filling/Predicates/IsValidInDomain_FillPredicate.cpp \ 20 21 Filling/Predicates/IsVoidNode_FillPredicate.cpp \ 21 Filling/Predicates/Ops_FillPredicate.cpp 22 Filling/Predicates/Ops_FillPredicate.cpp \ 23 Filling/Preparators/BaseFillerPreparator.cpp \ 24 Filling/Preparators/BoxFillerPreparator.cpp \ 25 Filling/Preparators/ShapeSurfaceFillerPreparator.cpp \ 26 Filling/Preparators/ShapeVolumeFillerPreparator.cpp 22 27 23 28 FILLINGHEADER = \ … … 34 39 Filling/Inserter/SimpleInserter.hpp \ 35 40 Filling/Inserter/SurfaceInserter.hpp \ 41 Filling/Inserter/SurfaceRandomInserter.hpp \ 36 42 Filling/NodeTypes.hpp \ 37 43 Filling/Predicates/AnyFillPredicate.hpp \ … … 44 50 Filling/Predicates/IsVoidNode_FillPredicate.hpp \ 45 51 Filling/Predicates/Ops_FillPredicate.hpp \ 46 Filling/Predicates/Ops_FillPredicate_impl.hpp 47 52 Filling/Predicates/Ops_FillPredicate_impl.hpp \ 53 Filling/Preparators/BaseFillerPreparator.hpp \ 54 Filling/Preparators/BoxFillerPreparator.hpp \ 55 Filling/Preparators/ShapeSurfaceFillerPreparator.hpp \ 56 Filling/Preparators/ShapeVolumeFillerPreparator.hpp 48 57 49 58 noinst_LTLIBRARIES += libMolecuilderFilling.la -
src/Filling/Mesh/MeshAdaptor.hpp
r8859b5 r7f1b51 18 18 19 19 #include "Filling/NodeTypes.hpp" 20 #include "Filling/Mesh/Mesh.hpp" 20 21 21 22 class MeshAdaptor : public Mesh -
src/Fragmentation/Exporters/SaturationDistanceMaximizer.cpp
r8859b5 r7f1b51 117 117 my_func.df = &jacf; 118 118 my_func.fdf = &funcjacf; 119 my_func.params = getAdvocate(); 119 SaturationDistanceMaximizer::Advocate* const advocate = getAdvocate(); 120 my_func.params = advocate; 120 121 121 122 // allocate argument and set to zero … … 158 159 // free memory 159 160 gsl_multimin_fdfminimizer_free(s); 161 my_func.params = NULL; 162 delete advocate; 160 163 gsl_vector_free(x); 161 164 } -
src/Fragmentation/Homology/HomologyContainer.hpp
r8859b5 r7f1b51 181 181 void clear(); 182 182 183 /** Returns the number of keys in the container. 184 * 185 * \return size of internal container 186 */ 187 const size_t size() 188 { return container.size(); } 189 183 190 private: 184 191 //!> multimap containing all homologous graph under same key but each with its value -
src/LinkedCell/linkedcell.cpp
r8859b5 r7f1b51 141 141 LinkedCell_deprecated::~LinkedCell_deprecated() 142 142 { 143 if (LC != NULL) 144 for (index=0;index<N[0]*N[1]*N[2];index++) 145 LC[index].clear(); 146 delete[](LC); 143 if (LC != NULL) { 144 for (index=0;index<N[0]*N[1]*N[2];index++) { 145 // don't delete pointers are just "borrowed" 146 LC[index].clear(); 147 } 148 delete[] LC; 149 } 147 150 for(int i=0;i<NDIM;i++) 148 151 N[i] = 0; … … 367 370 } 368 371 } 369 delete (NeighbourList);372 delete NeighbourList; 370 373 } else 371 374 ELOG(2, "Around vector " << *center << " there are no atoms."); -
src/LinkedCell/unittests/linkedcellUnitTest.cpp
r8859b5 r7f1b51 378 378 CPPUNIT_ASSERT_EQUAL( (size_t)0, ListOfPoints->size() ); 379 379 CPPUNIT_ASSERT_EQUAL( true, ListOfPoints->empty() ); 380 delete (ListOfPoints);381 }; 380 delete ListOfPoints; 381 }; -
src/LinkedCell/unittests/stubs/ObserverBoxStub.cpp
r8859b5 r7f1b51 91 91 } 92 92 93 void Box::setM( RealSpaceMatrix_M)93 void Box::setM(const RealSpaceMatrix &_M) 94 94 { 95 95 OBSERVE; -
src/Parser/PdbParser.cpp
r8859b5 r7f1b51 295 295 for (size_t i = 0; i < MaxMol; ++i) 296 296 delete elementNo[i]; 297 delete elementNo;297 delete[] elementNo; 298 298 299 299 // write CONECTs -
src/Potentials/PartialNucleiChargeFitter.cpp
r8859b5 r7f1b51 227 227 PartialNucleiChargeFitter::~PartialNucleiChargeFitter() 228 228 { 229 delete PotentialFromCharges; 229 if (PartialCharges != NULL) 230 delete PartialCharges; 231 232 if (PotentialFromCharges != NULL) 233 delete PotentialFromCharges; 230 234 } 231 235 … … 235 239 const size_t rows = SampledPotential.getDimension(); 236 240 const size_t cols = positions.size(); 241 242 // allocate memory for PotentialFromCharges 243 if (PotentialFromCharges != NULL) { 244 delete PotentialFromCharges; 245 PotentialFromCharges = NULL; 246 } 237 247 PotentialFromCharges = new MatrixContent( rows, cols ); 238 248 // store step length per axis … … 285 295 { 286 296 // prepare PartialCharges 297 if (PartialCharges != NULL) { 298 delete PartialCharges; 299 PartialCharges = NULL; 300 } 287 301 PartialCharges = new VectorContent(positions.size()); 288 302 -
src/Potentials/PotentialRegistry.cpp
r8859b5 r7f1b51 44 44 {} 45 45 46 PotentialRegistry::~PotentialRegistry() 47 { 48 cleanup(); 49 } 46 50 47 51 void PotentialRegistry::registerInstance(EmpiricalPotential *potential) -
src/Potentials/PotentialRegistry.hpp
r8859b5 r7f1b51 45 45 private: 46 46 PotentialRegistry(); 47 virtual ~PotentialRegistry() {}47 virtual ~PotentialRegistry(); 48 48 }; 49 49 -
src/Potentials/SerializablePotential.hpp
r8859b5 r7f1b51 53 53 ParticleTypes(_ParticleTypes) 54 54 {} 55 ~SerializablePotential() {}55 virtual ~SerializablePotential() {} 56 56 57 57 /** Return the token name of this specific potential. -
src/Tesselation/CandidateForTesselation.cpp
r8859b5 r7f1b51 172 172 } 173 173 } 174 delete (ListofPoints);174 delete ListofPoints; 175 175 176 176 } -
src/Tesselation/boundary.cpp
r8859b5 r7f1b51 183 183 LineMap LinesOnBoundary; 184 184 TriangleMap TrianglesOnBoundary; 185 Vector *MolCenter = mol->DetermineCenterOfAll();185 Vector MolCenter = mol->DetermineCenterOfAll(); 186 186 Vector helper; 187 187 BoundariesTestPair BoundaryTestPair; … … 207 207 // Boundaries stores non-const TesselPoint ref, hence we need iterator here 208 208 for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) { 209 ProjectedVector = (*iter)->getPosition() - ( *MolCenter);209 ProjectedVector = (*iter)->getPosition() - (MolCenter); 210 210 ProjectedVector.ProjectOntoPlane(AxisVector); 211 211 … … 233 233 LOG(2, "Keeping new vector due to larger projected distance " << ProjectedVectorNorm << "."); 234 234 } else if (fabs(ProjectedVectorNorm - BoundaryTestPair.first->second.first) < MYEPSILON) { 235 helper = (*iter)->getPosition() - ( *MolCenter);235 helper = (*iter)->getPosition() - (MolCenter); 236 236 const double oldhelperNorm = helper.NormSquared(); 237 helper = BoundaryTestPair.first->second.second->getPosition() - ( *MolCenter);237 helper = BoundaryTestPair.first->second.second->getPosition() - (MolCenter); 238 238 if (helper.NormSquared() < oldhelperNorm) { 239 239 BoundaryTestPair.first->second.second = (*iter); … … 289 289 { 290 290 Vector SideA, SideB, SideC, SideH; 291 SideA = left->second.second->getPosition() - ( *MolCenter);291 SideA = left->second.second->getPosition() - (MolCenter); 292 292 SideA.ProjectOntoPlane(AxisVector); 293 293 // LOG(1, "SideA: " << SideA); 294 294 295 SideB = right->second.second->getPosition() -( *MolCenter);295 SideB = right->second.second->getPosition() -(MolCenter); 296 296 SideB.ProjectOntoPlane(AxisVector); 297 297 // LOG(1, "SideB: " << SideB); … … 301 301 // LOG(1, "SideC: " << SideC); 302 302 303 SideH = runner->second.second->getPosition() -( *MolCenter);303 SideH = runner->second.second->getPosition() -(MolCenter); 304 304 SideH.ProjectOntoPlane(AxisVector); 305 305 // LOG(1, "SideH: " << SideH); … … 329 329 } while (flag); 330 330 } 331 delete(MolCenter);332 331 return BoundaryPoints; 333 332 }; … … 655 654 }; 656 655 657 /** Creates multiples of the by \a *mol given cluster and suspends them in water with a given final density.658 * We get cluster volume by Tesselation::getVolumeOfConvexEnvelope() and its diameters by GetDiametersOfCluster()659 * TODO: Here, we need a VolumeOfGeneralEnvelope (i.e. non-convex one)660 * \param *out output stream for debugging661 * \param *configuration needed for path to store convex envelope file662 * \param *mol molecule structure representing the cluster663 * \param *&TesselStruct Tesselation structure with triangles on return664 * \param ClusterVolume guesstimated cluster volume, if equal 0 we used Tesselation::getVolumeOfConvexEnvelope() instead.665 * \param celldensity desired average density in final cell666 */667 void PrepareClustersinWater(config *configuration, molecule *mol, double ClusterVolume, double celldensity)668 {669 //Info FunctionInfo(__func__);670 bool IsAngstroem = true;671 double *GreatestDiameter = NULL;672 Boundaries *BoundaryPoints = NULL;673 class Tesselation *TesselStruct = NULL;674 Vector BoxLengths;675 int repetition[NDIM] = { 1, 1, 1 };676 int TotalNoClusters = 1;677 double totalmass = 0.;678 double clustervolume = 0.;679 double cellvolume = 0.;680 681 // transform to PAS by Action682 Vector MainAxis(0.,0.,1.);683 mol->RotateToPrincipalAxisSystem(MainAxis);684 685 IsAngstroem = configuration->GetIsAngstroem();686 BoundaryPoints = GetBoundaryPoints(mol, TesselStruct);687 GreatestDiameter = GetDiametersOfCluster(BoundaryPoints, mol, TesselStruct, IsAngstroem);688 PointCloudAdaptor< molecule > cloud(mol, mol->name);689 LinkedCell_deprecated *LCList = new LinkedCell_deprecated(cloud, 10.);690 FindConvexBorder(mol, BoundaryPoints, TesselStruct, (const LinkedCell_deprecated *&)LCList, NULL);691 delete (LCList);692 delete[] BoundaryPoints;693 694 695 // some preparations beforehand696 if (ClusterVolume == 0)697 clustervolume = TesselStruct->getVolumeOfConvexEnvelope(configuration->GetIsAngstroem());698 else699 clustervolume = ClusterVolume;700 701 delete TesselStruct;702 703 for (int i = 0; i < NDIM; i++)704 TotalNoClusters *= repetition[i];705 706 // sum up the atomic masses707 for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {708 totalmass += (*iter)->getType()->getMass();709 }710 LOG(0, "RESULT: The summed mass is " << setprecision(10) << totalmass << " atomicmassunit.");711 LOG(0, "RESULT: The average density is " << setprecision(10) << totalmass / clustervolume << " atomicmassunit/" << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");712 713 // solve cubic polynomial714 LOG(1, "Solving equidistant suspension in water problem ...");715 if (IsAngstroem)716 cellvolume = (TotalNoClusters * totalmass / SOLVENTDENSITY_A - (totalmass / clustervolume)) / (celldensity - 1);717 else718 cellvolume = (TotalNoClusters * totalmass / SOLVENTDENSITY_a0 - (totalmass / clustervolume)) / (celldensity - 1);719 LOG(1, "Cellvolume needed for a density of " << celldensity << " g/cm^3 is " << cellvolume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");720 721 double minimumvolume = TotalNoClusters * (GreatestDiameter[0] * GreatestDiameter[1] * GreatestDiameter[2]);722 LOG(1, "Minimum volume of the convex envelope contained in a rectangular box is " << minimumvolume << " atomicmassunit/" << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");723 if (minimumvolume > cellvolume) {724 ELOG(1, "the containing box already has a greater volume than the envisaged cell volume!");725 LOG(0, "Setting Box dimensions to minimum possible, the greatest diameters.");726 for (int i = 0; i < NDIM; i++)727 BoxLengths[i] = GreatestDiameter[i];728 mol->CenterEdge(&BoxLengths);729 } else {730 BoxLengths[0] = (repetition[0] * GreatestDiameter[0] + repetition[1] * GreatestDiameter[1] + repetition[2] * GreatestDiameter[2]);731 BoxLengths[1] = (repetition[0] * repetition[1] * GreatestDiameter[0] * GreatestDiameter[1] + repetition[0] * repetition[2] * GreatestDiameter[0] * GreatestDiameter[2] + repetition[1] * repetition[2] * GreatestDiameter[1] * GreatestDiameter[2]);732 BoxLengths[2] = minimumvolume - cellvolume;733 double x0 = 0.;734 double x1 = 0.;735 double x2 = 0.;736 if (gsl_poly_solve_cubic(BoxLengths[0], BoxLengths[1], BoxLengths[2], &x0, &x1, &x2) == 1) // either 1 or 3 on return737 LOG(0, "RESULT: The resulting spacing is: " << x0 << " .");738 else {739 LOG(0, "RESULT: The resulting spacings are: " << x0 << " and " << x1 << " and " << x2 << " .");740 x0 = x2; // sorted in ascending order741 }742 743 cellvolume = 1.;744 for (int i = 0; i < NDIM; i++) {745 BoxLengths[i] = repetition[i] * (x0 + GreatestDiameter[i]);746 cellvolume *= BoxLengths[i];747 }748 749 // set new box dimensions750 LOG(0, "Translating to box with these boundaries.");751 mol->SetBoxDimension(&BoxLengths);752 mol->CenterInBox();753 }754 delete[] GreatestDiameter;755 // update Box of atoms by boundary756 mol->SetBoxDimension(&BoxLengths);757 LOG(0, "RESULT: The resulting cell dimensions are: " << BoxLengths[0] << " and " << BoxLengths[1] << " and " << BoxLengths[2] << " with total volume of " << cellvolume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");758 };759 760 761 /** Fills the empty space around other molecules' surface of the simulation box with a filler.762 * \param *out output stream for debugging763 * \param *List list of molecules already present in box764 * \param *TesselStruct contains tesselated surface765 * \param *filler molecule which the box is to be filled with766 * \param configuration contains box dimensions767 * \param MaxDistance fills in molecules only up to this distance (set to -1 if whole of the domain)768 * \param distance[NDIM] distance between filling molecules in each direction769 * \param boundary length of boundary zone between molecule and filling mollecules770 * \param epsilon distance to surface which is not filled771 * \param RandAtomDisplacement maximum distance for random displacement per atom772 * \param RandMolDisplacement maximum distance for random displacement per filler molecule773 * \param DoRandomRotation true - do random rotiations, false - don't774 */775 void FillBoxWithMolecule(MoleculeListClass *List, molecule *filler, config &configuration, const double MaxDistance, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const bool DoRandomRotation)776 {777 //Info FunctionInfo(__func__);778 molecule *Filling = World::getInstance().createMolecule();779 Vector CurrentPosition;780 int N[NDIM];781 int n[NDIM];782 const RealSpaceMatrix &M = World::getInstance().getDomain().getM();783 RealSpaceMatrix Rotations;784 const RealSpaceMatrix &MInverse = World::getInstance().getDomain().getMinv();785 Vector AtomTranslations;786 Vector FillerTranslations;787 Vector FillerDistance;788 Vector Inserter;789 double FillIt = false;790 bond::ptr Binder;791 double phi[NDIM];792 map<molecule *, Tesselation *> TesselStruct;793 map<molecule *, LinkedCell_deprecated *> LCList;794 795 for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++)796 if ((*ListRunner)->getAtomCount() > 0) {797 LOG(1, "Pre-creating linked cell lists for molecule " << *ListRunner << ".");798 PointCloudAdaptor< molecule > cloud(*ListRunner, (*ListRunner)->name);799 LCList[(*ListRunner)] = new LinkedCell_deprecated(cloud, 10.); // get linked cell list800 LOG(1, "Pre-creating tesselation for molecule " << *ListRunner << ".");801 TesselStruct[(*ListRunner)] = NULL;802 FindNonConvexBorder((*ListRunner), TesselStruct[(*ListRunner)], (const LinkedCell_deprecated *&)LCList[(*ListRunner)], 5., NULL);803 }804 805 // Center filler at origin806 filler->CenterEdge(&Inserter);807 const int FillerCount = filler->getAtomCount();808 LOG(2, "INFO: Filler molecule has the following bonds:");809 for(molecule::iterator AtomRunner = filler->begin(); AtomRunner != filler->end(); ++AtomRunner) {810 const BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();811 for(BondList::const_iterator BondRunner = ListOfBonds.begin();812 BondRunner != ListOfBonds.end();813 ++BondRunner) {814 if ((*BondRunner)->leftatom == *AtomRunner)815 LOG(2, " " << *(*BondRunner));816 }817 }818 819 atom * CopyAtoms[FillerCount];820 821 // calculate filler grid in [0,1]^3822 FillerDistance = MInverse * Vector(distance[0], distance[1], distance[2]);823 for(int i=0;i<NDIM;i++)824 N[i] = (int) ceil(1./FillerDistance[i]);825 LOG(1, "INFO: Grid steps are " << N[0] << ", " << N[1] << ", " << N[2] << ".");826 827 // initialize seed of random number generator to current time828 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();829 const double rng_min = random.min();830 const double rng_max = random.max();831 //srand ( time(NULL) );832 833 // go over [0,1]^3 filler grid834 for (n[0] = 0; n[0] < N[0]; n[0]++)835 for (n[1] = 0; n[1] < N[1]; n[1]++)836 for (n[2] = 0; n[2] < N[2]; n[2]++) {837 // calculate position of current grid vector in untransformed box838 CurrentPosition = M * Vector((double)n[0]/(double)N[0], (double)n[1]/(double)N[1], (double)n[2]/(double)N[2]);839 // create molecule random translation vector ...840 for (int i=0;i<NDIM;i++)841 FillerTranslations[i] = RandomMolDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);842 LOG(2, "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << ".");843 844 // go through all atoms845 for (int i=0;i<FillerCount;i++)846 CopyAtoms[i] = NULL;847 848 // have same rotation angles for all molecule's atoms849 if (DoRandomRotation)850 for (int i=0;i<NDIM;i++)851 phi[i] = (random()/(rng_max-rng_min))*(2.*M_PI);852 853 // atom::clone is not const member function, hence we need iterator here854 for(molecule::iterator iter = filler->begin(); iter !=filler->end();++iter){855 856 // create atomic random translation vector ...857 for (int i=0;i<NDIM;i++)858 AtomTranslations[i] = RandomAtomDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);859 860 // ... and rotation matrix861 if (DoRandomRotation) {862 Rotations.set(0,0, cos(phi[0]) *cos(phi[2]) + (sin(phi[0])*sin(phi[1])*sin(phi[2])));863 Rotations.set(0,1, sin(phi[0]) *cos(phi[2]) - (cos(phi[0])*sin(phi[1])*sin(phi[2])));864 Rotations.set(0,2, cos(phi[1])*sin(phi[2]) );865 Rotations.set(1,0, -sin(phi[0])*cos(phi[1]) );866 Rotations.set(1,1, cos(phi[0])*cos(phi[1]) );867 Rotations.set(1,2, sin(phi[1]) );868 Rotations.set(2,0, -cos(phi[0]) *sin(phi[2]) + (sin(phi[0])*sin(phi[1])*cos(phi[2])));869 Rotations.set(2,1, -sin(phi[0]) *sin(phi[2]) - (cos(phi[0])*sin(phi[1])*cos(phi[2])));870 Rotations.set(2,2, cos(phi[1])*cos(phi[2]) );871 }872 873 // ... and put at new position874 Inserter = (*iter)->getPosition();875 if (DoRandomRotation)876 Inserter *= Rotations;877 Inserter += AtomTranslations + FillerTranslations + CurrentPosition;878 879 // check whether inserter is inside box880 Inserter *= MInverse;881 FillIt = true;882 for (int i=0;i<NDIM;i++)883 FillIt = FillIt && (Inserter[i] >= -MYEPSILON) && ((Inserter[i]-1.) <= MYEPSILON);884 Inserter *= M;885 886 // Check whether point is in- or outside887 for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++) {888 // get linked cell list889 if (TesselStruct[(*ListRunner)] != NULL) {890 const double distance = (TesselStruct[(*ListRunner)]->GetDistanceToSurface(Inserter, LCList[(*ListRunner)]));891 FillIt = FillIt && (distance > boundary) && ((MaxDistance < 0) || (MaxDistance > distance));892 }893 }894 // insert into Filling895 if (FillIt) {896 LOG(1, "INFO: Position at " << Inserter << " is outer point.");897 // copy atom ...898 CopyAtoms[(*iter)->getNr()] = (*iter)->clone();899 (*CopyAtoms[(*iter)->getNr()]).setPosition(Inserter);900 Filling->AddAtom(CopyAtoms[(*iter)->getNr()]);901 LOG(1, "Filling atom " << **iter << ", translated to " << AtomTranslations << ", at final position is " << (CopyAtoms[(*iter)->getNr()]->getPosition()) << ".");902 } else {903 LOG(1, "INFO: Position at " << Inserter << " is inner point, within boundary or outside of MaxDistance.");904 CopyAtoms[(*iter)->getNr()] = NULL;905 continue;906 }907 }908 // go through all bonds and add as well909 for(molecule::iterator AtomRunner = filler->begin(); AtomRunner != filler->end(); ++AtomRunner) {910 const BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();911 for(BondList::const_iterator BondRunner = ListOfBonds.begin();912 BondRunner != ListOfBonds.end();913 ++BondRunner)914 if ((*BondRunner)->leftatom == *AtomRunner) {915 Binder = (*BondRunner);916 if ((CopyAtoms[Binder->leftatom->getNr()] != NULL) && (CopyAtoms[Binder->rightatom->getNr()] != NULL)) {917 LOG(3, "Adding Bond between " << *CopyAtoms[Binder->leftatom->getNr()] << " and " << *CopyAtoms[Binder->rightatom->getNr()]<< ".");918 Filling->AddBond(CopyAtoms[Binder->leftatom->getNr()], CopyAtoms[Binder->rightatom->getNr()], Binder->getDegree());919 }920 }921 }922 }923 for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++) {924 delete LCList[*ListRunner];925 delete TesselStruct[(*ListRunner)];926 }927 };928 929 /** Rotates given molecule \a Filling and moves its atoms according to given930 * \a RandomAtomDisplacement.931 *932 * Note that for rotation to be sensible, the molecule should be centered at933 * the origin. This is not done here!934 *935 * \param &Filling molecule whose atoms to displace936 * \param RandomAtomDisplacement magnitude of random displacement937 * \param &Rotations 3D rotation matrix (or unity if no rotation desired)938 */939 void RandomizeMoleculePositions(940 molecule *&Filling,941 double RandomAtomDisplacement,942 RealSpaceMatrix &Rotations,943 RandomNumberGenerator &random944 )945 {946 const double rng_min = random.min();947 const double rng_max = random.max();948 949 Vector AtomTranslations;950 for(molecule::iterator miter = Filling->begin(); miter != Filling->end(); ++miter) {951 Vector temp = (*miter)->getPosition();952 temp *= Rotations;953 (*miter)->setPosition(temp);954 // create atomic random translation vector ...955 for (int i=0;i<NDIM;i++)956 AtomTranslations[i] = RandomAtomDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);957 (*miter)->setPosition((*miter)->getPosition() + AtomTranslations);958 }959 }960 961 /** Removes all atoms of a molecule outside.962 *963 * If the molecule is empty, it is removed as well.964 *965 * @param Filling molecule whose atoms to check, removed if eventually left966 * empty.967 * @return true - atoms had to be removed, false - no atoms have been removed968 */969 bool RemoveAtomsOutsideDomain(molecule *&Filling)970 {971 bool status = false;972 Box &Domain = World::getInstance().getDomain();973 // check if all is still inside domain974 for(molecule::iterator miter = Filling->begin(); miter != Filling->end(); ) {975 // check whether each atom is inside box976 if (!Domain.isInside((*miter)->getPosition())) {977 status = true;978 atom *Walker = *miter;979 ++miter;980 World::getInstance().destroyAtom(Walker);981 } else {982 ++miter;983 }984 }985 if (Filling->empty()) {986 LOG(0, "Removing molecule " << Filling->getName() << ", all atoms have been removed.");987 World::getInstance().destroyMolecule(Filling);988 Filling = NULL;989 }990 return status;991 }992 993 /** Checks whether there are no atoms inside a sphere around \a CurrentPosition994 * except those atoms present in \a *filler.995 * If filler is NULL, then we just call LinkedCell_deprecated::GetPointsInsideSphere() and996 * check whether the return list is empty.997 * @param *filler998 * @param boundary999 * @param CurrentPosition1000 */1001 bool isSpaceAroundPointVoid(1002 LinkedCell_deprecated *LC,1003 molecule *filler,1004 const double boundary,1005 Vector &CurrentPosition)1006 {1007 size_t compareTo = 0;1008 TesselPointSTLList* liste = LC->GetPointsInsideSphere(boundary == 0. ? MYEPSILON : boundary, &CurrentPosition);1009 if (filler != NULL) {1010 for (TesselPointSTLList::const_iterator iter = liste->begin();1011 iter != liste->end();1012 ++iter) {1013 for (molecule::iterator miter = filler->begin();1014 miter != filler->end();1015 ++miter) {1016 if (*iter == *miter)1017 ++compareTo;1018 }1019 }1020 }1021 const bool result = (liste->size() == compareTo);1022 if (!result) {1023 LOG(0, "Skipping because of the following atoms:");1024 for (TesselPointSTLList::const_iterator iter = liste->begin();1025 iter != liste->end();1026 ++iter) {1027 LOG(0, **iter);1028 }1029 }1030 delete(liste);1031 return result;1032 }1033 1034 /** Sets given 3x3 matrix to a random rotation matrix.1035 *1036 * @param a matrix to set1037 */1038 inline void setRandomRotation(RealSpaceMatrix &a)1039 {1040 double phi[NDIM];1041 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();1042 const double rng_min = random.min();1043 const double rng_max = random.max();1044 1045 for (int i=0;i<NDIM;i++) {1046 phi[i] = (random()/(rng_max-rng_min))*(2.*M_PI);1047 LOG(4, "DEBUG: Random angle is " << phi[i] << ".");1048 }1049 1050 a.setRotation(phi);1051 }1052 1053 /** Fills the empty space of the simulation box with water.1054 * \param *filler molecule which the box is to be filled with1055 * \param configuration contains box dimensions1056 * \param distance[NDIM] distance between filling molecules in each direction1057 * \param boundary length of boundary zone between molecule and filling molecules1058 * \param RandAtomDisplacement maximum distance for random displacement per atom1059 * \param RandMolDisplacement maximum distance for random displacement per filler molecule1060 * \param MinDistance minimum distance to boundary of domain and present molecules1061 * \param DoRandomRotation true - do random rotations, false - don't1062 */1063 void FillVoidWithMolecule(1064 molecule *&filler,1065 config &configuration,1066 const double distance[NDIM],1067 const double boundary,1068 const double RandomAtomDisplacement,1069 const double RandomMolDisplacement,1070 const double MinDistance,1071 const bool DoRandomRotation1072 )1073 {1074 //Info FunctionInfo(__func__);1075 molecule *Filling = NULL;1076 Vector CurrentPosition;1077 int N[NDIM];1078 int n[NDIM];1079 const RealSpaceMatrix &M = World::getInstance().getDomain().getM();1080 RealSpaceMatrix Rotations;1081 const RealSpaceMatrix &MInverse = World::getInstance().getDomain().getMinv();1082 Vector FillerTranslations;1083 Vector FillerDistance;1084 Vector Inserter;1085 double FillIt = false;1086 Vector firstInserter;1087 bool firstInsertion = true;1088 const Box &Domain = World::getInstance().getDomain();1089 map<molecule *, LinkedCell_deprecated *> LCList;1090 std::vector<molecule *> List = World::getInstance().getAllMolecules();1091 MoleculeListClass *MolList = World::getInstance().getMolecules();1092 1093 for (std::vector<molecule *>::iterator ListRunner = List.begin(); ListRunner != List.end(); ListRunner++)1094 if ((*ListRunner)->getAtomCount() > 0) {1095 LOG(1, "Pre-creating linked cell lists for molecule " << *ListRunner << ".");1096 PointCloudAdaptor< molecule > cloud(*ListRunner, (*ListRunner)->name);1097 LCList[(*ListRunner)] = new LinkedCell_deprecated(cloud, 10.); // get linked cell list1098 }1099 1100 // Center filler at its center of gravity1101 Vector *gravity = filler->DetermineCenterOfGravity();1102 filler->CenterAtVector(gravity);1103 delete gravity;1104 //const int FillerCount = filler->getAtomCount();1105 LOG(2, "INFO: Filler molecule has the following bonds:");1106 for(molecule::iterator AtomRunner = filler->begin(); AtomRunner != filler->end(); ++AtomRunner) {1107 const BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();1108 for(BondList::const_iterator BondRunner = ListOfBonds.begin();1109 BondRunner != ListOfBonds.end();1110 ++BondRunner)1111 if ((*BondRunner)->leftatom == *AtomRunner)1112 LOG(2, " " << *(*BondRunner));1113 }1114 1115 // calculate filler grid in [0,1]^31116 FillerDistance = MInverse * Vector(distance[0], distance[1], distance[2]);1117 for(int i=0;i<NDIM;i++)1118 N[i] = (int) ceil(1./FillerDistance[i]);1119 LOG(1, "INFO: Grid steps are " << N[0] << ", " << N[1] << ", " << N[2] << ".");1120 1121 // initialize seed of random number generator to current time1122 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();1123 const double rng_min = random.min();1124 const double rng_max = random.max();1125 //srand ( time(NULL) );1126 1127 // go over [0,1]^3 filler grid1128 for (n[0] = 0; n[0] < N[0]; n[0]++)1129 for (n[1] = 0; n[1] < N[1]; n[1]++)1130 for (n[2] = 0; n[2] < N[2]; n[2]++) {1131 // calculate position of current grid vector in untransformed box1132 CurrentPosition = M * Vector((double)n[0]/(double)N[0], (double)n[1]/(double)N[1], (double)n[2]/(double)N[2]);1133 // create molecule random translation vector ...1134 for (int i=0;i<NDIM;i++) // have the random values [-1,1]*RandomMolDisplacement1135 FillerTranslations[i] = RandomMolDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);1136 LOG(2, "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << ".");1137 1138 // ... and rotation matrix1139 if (DoRandomRotation)1140 setRandomRotation(Rotations);1141 else1142 Rotations.setIdentity();1143 1144 1145 // Check whether there is anything too close by and whether atom is outside of domain1146 FillIt = true;1147 for (std::map<molecule *, LinkedCell_deprecated *>::iterator ListRunner = LCList.begin(); ListRunner != LCList.end(); ++ListRunner) {1148 FillIt = FillIt && isSpaceAroundPointVoid(1149 ListRunner->second,1150 (firstInsertion ? filler : NULL),1151 boundary,1152 CurrentPosition);1153 FillIt = FillIt && (Domain.isValid(CurrentPosition))1154 && ((Domain.DistanceToBoundary(CurrentPosition) - MinDistance) > -MYEPSILON);1155 if (!FillIt)1156 break;1157 }1158 1159 // insert into Filling1160 if (FillIt) {1161 Inserter = CurrentPosition + FillerTranslations;1162 LOG(1, "INFO: Position at " << Inserter << " is void point.");1163 // fill!1164 Filling = filler->CopyMolecule();1165 RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations, random);1166 // translation1167 Filling->Translate(&Inserter);1168 // remove out-of-bounds atoms1169 const bool status = RemoveAtomsOutsideDomain(Filling);1170 if ((firstInsertion) && (!status)) { // no atom has been removed1171 // remove copied atoms and molecule again1172 Filling->removeAtomsinMolecule();1173 World::getInstance().destroyMolecule(Filling);1174 // and mark is final filler position1175 Filling = filler;1176 firstInsertion = false;1177 firstInserter = Inserter;1178 } else {1179 // TODO: Remove when World has no MoleculeListClass anymore1180 if (Filling)1181 MolList->insert(Filling);1182 }1183 } else {1184 LOG(1, "INFO: Position at " << Inserter << " is non-void point, within boundary or outside of MaxDistance.");1185 continue;1186 }1187 }1188 1189 // have we inserted any molecules?1190 if (firstInsertion) {1191 // If not remove filler1192 for(molecule::iterator miter = filler->begin(); !filler->empty(); miter = filler->begin()) {1193 atom *Walker = *miter;1194 World::getInstance().destroyAtom(Walker);1195 }1196 World::getInstance().destroyMolecule(filler);1197 } else {1198 // otherwise translate and randomize to final position1199 if (DoRandomRotation)1200 setRandomRotation(Rotations);1201 else1202 Rotations.setIdentity();1203 RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations, random);1204 // translation1205 filler->Translate(&firstInserter);1206 // remove out-of-bounds atoms1207 RemoveAtomsOutsideDomain(filler);1208 }1209 1210 LOG(0, MolList->ListOfMolecules.size() << " molecules have been inserted.");1211 1212 for (std::map<molecule *, LinkedCell_deprecated *>::iterator ListRunner = LCList.begin(); !LCList.empty(); ListRunner = LCList.begin()) {1213 delete ListRunner->second;1214 LCList.erase(ListRunner);1215 }1216 };1217 1218 1219 /** Fills the empty space around other molecules' surface of the simulation box with a filler.1220 *1221 * Note that we use \a FindNonConvexBorder to determine the surface of the found molecules.1222 * There, we use a radius of twice the given \a boundary.1223 *1224 * \param *out output stream for debugging1225 * \param *List list of molecules already present in box1226 * \param *TesselStruct contains tesselated surface1227 * \param *filler molecule which the box is to be filled with1228 * \param configuration contains box dimensions1229 * \param MaxSurfaceDistance fills in molecules only up to this distance (set to -1 if whole of the domain)1230 * \param distance[NDIM] distance between filling molecules in each direction1231 * \param boundary length of boundary zone between molecule and filling molecules1232 * \param MinDistance distance to boundary of domain which is not filled1233 * \param RandAtomDisplacement maximum distance for random displacement per atom1234 * \param RandMolDisplacement maximum distance for random displacement per filler molecule1235 * \param DoRandomRotation true - do random rotations, false - don't1236 */1237 void FillBoxWithMolecule(1238 MoleculeListClass *MolList,1239 molecule *filler,1240 config &configuration,1241 const double MaxSurfaceDistance,1242 const double distance[NDIM],1243 const double boundary,1244 const double MinDistance,1245 const double RandomAtomDisplacement,1246 const double RandomMolDisplacement,1247 const bool DoRandomRotation)1248 {1249 //Info FunctionInfo(__func__);1250 molecule *Filling = NULL;1251 Vector CurrentPosition;1252 int N[NDIM];1253 int n[NDIM];1254 const RealSpaceMatrix &M = World::getInstance().getDomain().getM();1255 RealSpaceMatrix Rotations;1256 const RealSpaceMatrix &MInverse = World::getInstance().getDomain().getMinv();1257 Vector FillerTranslations;1258 Vector FillerDistance;1259 Vector Inserter;1260 double FillIt = false;1261 Vector firstInserter;1262 bool firstInsertion = true;1263 const Box &Domain = World::getInstance().getDomain();1264 map<molecule *, LinkedCell_deprecated *> LCList;1265 std::vector<molecule *> List = World::getInstance().getAllMolecules();1266 map<molecule *, Tesselation *> TesselStruct;1267 1268 for (MoleculeList::iterator ListRunner = MolList->ListOfMolecules.begin(); ListRunner != MolList->ListOfMolecules.end(); ListRunner++)1269 if ((*ListRunner)->getAtomCount() > 0) {1270 LOG(1, "Pre-creating linked cell lists for molecule " << *ListRunner << ".");1271 PointCloudAdaptor< molecule > cloud(*ListRunner, (*ListRunner)->name);1272 LCList[(*ListRunner)] = new LinkedCell_deprecated(cloud, 4.*boundary); // get linked cell list1273 LOG(1, "Pre-creating tesselation for molecule " << *ListRunner << ".");1274 TesselStruct[(*ListRunner)] = NULL;1275 FindNonConvexBorder((*ListRunner), TesselStruct[(*ListRunner)], (const LinkedCell_deprecated *&)LCList[(*ListRunner)], 2.*boundary, NULL);1276 }1277 1278 // Center filler at origin1279 filler->CenterEdge(&Inserter);1280 // const int FillerCount = filler->getAtomCount();1281 LOG(2, "INFO: Filler molecule has the following bonds:");1282 for(molecule::iterator AtomRunner = filler->begin(); AtomRunner != filler->end(); ++AtomRunner) {1283 const BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();1284 for(BondList::const_iterator BondRunner = ListOfBonds.begin();1285 BondRunner != ListOfBonds.end();1286 ++BondRunner) {1287 if ((*BondRunner)->leftatom == *AtomRunner)1288 LOG(2, " " << *(*BondRunner));1289 }1290 }1291 1292 // atom * CopyAtoms[FillerCount];1293 1294 setVerbosity(4);1295 1296 // calculate filler grid in [0,1]^31297 FillerDistance = MInverse * Vector(distance[0], distance[1], distance[2]);1298 for(int i=0;i<NDIM;i++)1299 N[i] = (int) ceil(1./FillerDistance[i]);1300 LOG(1, "INFO: Grid steps are " << N[0] << ", " << N[1] << ", " << N[2] << ".");1301 1302 // initialize seed of random number generator to current time1303 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();1304 const double rng_min = random.min();1305 const double rng_max = random.max();1306 //srand ( time(NULL) );1307 1308 // go over [0,1]^3 filler grid1309 for (n[0] = 0; n[0] < N[0]; n[0]++)1310 for (n[1] = 0; n[1] < N[1]; n[1]++)1311 for (n[2] = 0; n[2] < N[2]; n[2]++) {1312 // calculate position of current grid vector in untransformed box1313 CurrentPosition = M * Vector((double)n[0]/(double)N[0], (double)n[1]/(double)N[1], (double)n[2]/(double)N[2]);1314 // create molecule random translation vector ...1315 for (int i=0;i<NDIM;i++)1316 FillerTranslations[i] = RandomMolDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);1317 LOG(1, "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << ".");1318 1319 // ... and rotation matrix1320 if (DoRandomRotation)1321 setRandomRotation(Rotations);1322 else1323 Rotations.setIdentity();1324 1325 1326 // Check whether there is anything too close by and whether atom is outside of domain1327 FillIt = true;1328 for (std::map<molecule *, LinkedCell_deprecated *>::iterator ListRunner = LCList.begin(); ListRunner != LCList.end(); ++ListRunner) {1329 // check whether its void1330 FillIt = FillIt && isSpaceAroundPointVoid(1331 ListRunner->second,1332 (firstInsertion ? filler : NULL),1333 boundary,1334 CurrentPosition);1335 if (!FillIt) {1336 LOG(2, "REJECT: Position at " << Inserter << " is non-void.");1337 break;1338 }1339 // check whether inside domain1340 FillIt = FillIt && (Domain.isValid(CurrentPosition));1341 if (!FillIt) {1342 LOG(2, "REJECT: Position at " << CurrentPosition << " is "1343 << distance << ", hence outside of domain.");1344 break;1345 }1346 // check minimum distance to boundary1347 const double distance = (Domain.DistanceToBoundary(CurrentPosition) - MinDistance);1348 FillIt = FillIt && (distance > -MYEPSILON);1349 if (!FillIt) {1350 LOG(2, "REJECT: Position at " << CurrentPosition << " is " << distance << ", less than "1351 << MinDistance << " hence, too close to boundary.");1352 break;1353 }1354 }1355 // Check whether point is in- or outside of tesselations1356 if (FillIt) {1357 for (MoleculeList::iterator ListRunner = MolList->ListOfMolecules.begin(); ListRunner != MolList->ListOfMolecules.end(); ListRunner++) {1358 // get linked cell list1359 if (TesselStruct[(*ListRunner)] != NULL) {1360 const double distance = (TesselStruct[(*ListRunner)]->GetDistanceToSurface(Inserter, LCList[(*ListRunner)]));1361 LOG(2, "INFO: Distance to surface is " << distance << ".");1362 FillIt = FillIt && ((distance == -1.) || (distance > boundary)) && ((MaxSurfaceDistance < 0) || (MaxSurfaceDistance > distance));1363 if (!FillIt) {1364 LOG(2, "REJECT: Position at " << CurrentPosition << " is in distance of " << distance1365 << " to a surface, less than " << MaxSurfaceDistance << " hence, too close.");1366 break;1367 }1368 }1369 }1370 }1371 1372 // insert into Filling1373 if (FillIt) {1374 Inserter = CurrentPosition + FillerTranslations;1375 LOG(2, "ACCEPT: Position at " << CurrentPosition << " is void point.");1376 // fill!1377 Filling = filler->CopyMolecule();1378 RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations, random);1379 // translation1380 Filling->Translate(&Inserter);1381 // remove out-of-bounds atoms1382 const bool status = RemoveAtomsOutsideDomain(Filling);1383 if ((firstInsertion) && (!status)) { // no atom has been removed1384 // remove copied atoms and molecule again1385 Filling->removeAtomsinMolecule();1386 World::getInstance().destroyMolecule(Filling);1387 // and mark is final filler position1388 Filling = filler;1389 firstInsertion = false;1390 firstInserter = Inserter;1391 } else {1392 // TODO: Remove when World has no MoleculeListClass anymore1393 if (Filling)1394 MolList->insert(Filling);1395 }1396 } else {1397 LOG(2, "REJECT: Position at " << CurrentPosition << " is non-void point, within boundary or outside of MaxSurfaceDistance.");1398 continue;1399 }1400 }1401 1402 // have we inserted any molecules?1403 if (firstInsertion) {1404 // If not remove filler1405 for(molecule::iterator miter = filler->begin(); !filler->empty(); miter = filler->begin()) {1406 atom *Walker = *miter;1407 World::getInstance().destroyAtom(Walker);1408 }1409 World::getInstance().destroyMolecule(filler);1410 } else {1411 // otherwise translate and randomize to final position1412 if (DoRandomRotation)1413 setRandomRotation(Rotations);1414 else1415 Rotations.setIdentity();1416 RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations, random);1417 // translation1418 filler->Translate(&firstInserter);1419 // remove out-of-bounds atoms1420 RemoveAtomsOutsideDomain(filler);1421 }1422 1423 LOG(0, MolList->ListOfMolecules.size() << " molecules have been inserted.");1424 1425 for (std::map<molecule *, LinkedCell_deprecated *>::iterator ListRunner = LCList.begin(); !LCList.empty(); ListRunner = LCList.begin()) {1426 delete ListRunner->second;1427 LCList.erase(ListRunner);1428 }1429 };1430 1431 656 /** Tesselates the non convex boundary by rolling a virtual sphere along the surface of the molecule. 1432 657 * \param *out output stream for debugging -
src/Tesselation/boundary.hpp
r8859b5 r7f1b51 40 40 41 41 double ConvexizeNonconvexEnvelope(class Tesselation *&TesselStruct, const molecule * const mol, const char * const filename); 42 void FillBoxWithMolecule(MoleculeListClass *List, molecule *filler, config &configuration, const double MaxDistance, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const bool DoRandomRotation);43 void FillVoidWithMolecule(molecule *&filler, config &configuration, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const double MinDistance, const bool DoRandomRotation);44 42 void FindConvexBorder(const molecule* const mol, Boundaries *BoundaryPts, Tesselation *&TesselStruct, const LinkedCell_deprecated *LCList, const char *filename); 45 43 Vector* FindEmbeddingHole(MoleculeListClass *mols, molecule *srcmol); … … 47 45 Boundaries *GetBoundaryPoints(const molecule *mol, Tesselation *&TesselStruct); 48 46 double * GetDiametersOfCluster(const Boundaries *BoundaryPtr, const molecule *mol, Tesselation *&TesselStruct, const bool IsAngstroem); 49 void PrepareClustersinWater(config *configuration, molecule *mol, double ClusterVolume, double celldensity);50 47 bool RemoveAllBoundaryPoints(class Tesselation *&TesselStruct, const molecule * const mol, const char * const filename); 51 48 void StoreTrianglesinFile(const molecule * const mol, const Tesselation * const TesselStruct, const char *filename, const char *extraSuffix); -
src/Tesselation/tesselation.cpp
r8859b5 r7f1b51 161 161 } 162 162 } 163 164 delete LinkedList; 163 165 } 164 166 … … 1012 1014 LOG(3, "DEBUG: " << *(*Runner) << " with distance " << (*Runner)->distance(CandidateLine.OtherOptCenter) << "."); 1013 1015 } 1014 delete (ListofPoints);1016 delete ListofPoints; 1015 1017 1016 1018 return flag; -
src/UIElements/CommandLineUI/CommandLineParser.cpp
r8859b5 r7f1b51 52 52 #include "CommandLineParser.hpp" 53 53 #include "CommandLineParser_validate.hpp" 54 #include "World.hpp" 54 55 55 56 #include "CodePatterns/Singleton_impl.hpp" … … 430 431 void CommandLineParser::Parse() 431 432 { 432 po::store(po::command_line_parser(argc,argv).options(cmdline_options).run(), vm); 433 try { 434 po::store(po::command_line_parser(argc,argv).options(cmdline_options).run(), vm); 435 } catch (std::exception &e) { 436 std::cerr << "Something went wrong with parsing the command-line arguments." << std::endl; 437 World::getInstance().setExitFlag(134); 438 #ifdef HAVE_ACTION_THREAD 439 // force action queue to stop thread 440 ActionQueue::getInstance().stop(); 441 #endif 442 ActionQueue::getInstance().clearQueue(); 443 } 433 444 std::ifstream input; 434 445 input.open("example.cfg"); -
src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
r8859b5 r7f1b51 754 754 emit hoverChanged(_atom); 755 755 } 756 757 758 //#include <GL/glu.h>759 //#include <QtGui/qslider.h>760 //#include <QtGui/qevent.h>761 //762 //#include "ui_dialoglight.h"763 //764 //#include "CodePatterns/MemDebug.hpp"765 //766 //#include <iostream>767 //#include <boost/shared_ptr.hpp>768 //769 //#include "LinearAlgebra/Line.hpp"770 //#include "Atom/atom.hpp"771 //#include "Bond/bond.hpp"772 //#include "Element/element.hpp"773 //#include "molecule.hpp"774 //#include "Element/periodentafel.hpp"775 //#include "World.hpp"776 //777 //#if defined(Q_CC_MSVC)778 //#pragma warning(disable:4305) // init: truncation from const double to float779 //#endif780 //781 //782 //GLMoleculeView::GLMoleculeView(QWidget *parent) :783 // QGLWidget(parent), Observer("GLMoleculeView"), X(Vector(1,0,0)), Y(Vector(0,1,0)), Z(Vector(0,0,1))784 //{785 // xRot = yRot = zRot = 0.0; // default object rotation786 // scale = 5.; // default object scale787 // object = 0;788 // LightPosition[0] = 0.0f;789 // LightPosition[1] = 2.0f;790 // LightPosition[2] = 2.0f;791 // LightPosition[3] = 0.0f;792 // LightDiffuse[0] = 0.5f;793 // LightDiffuse[1] = 0.5f;794 // LightDiffuse[2] = 0.5f;795 // LightDiffuse[3] = 0.0f;796 // LightAmbient[0] = 0.0f;797 // LightAmbient[1] = 0.0f;798 // LightAmbient[2] = 0.0f;799 // LightAmbient[3] = 0.0f;800 //801 // SelectionColor[0] = 0;802 // SelectionColor[1] = 128;803 // SelectionColor[2] = 128;804 //805 // MultiViewEnabled = true;806 //807 // isSignaller = false;808 //809 // World::getInstance().signOn(this);810 //}811 //812 ///** Destructor of GLMoleculeView.813 // * Free's the CallList.814 // */815 //GLMoleculeView::~GLMoleculeView()816 //{817 // makeCurrent();818 // glDeleteLists( object, 1 );819 //820 // World::getInstance().signOff(this);821 //}822 //823 ///** Paints the conents of the OpenGL window.824 // * Clears the GL buffers, enables lighting and depth.825 // * Window is either quartered (if GLMoleculeView::MultiViewEnabled) and xy, xz, yz planar views826 // * are added. Uses the CallList, constructed during InitializeGL().827 // */828 //void GLMoleculeView::paintGL()829 //{830 // Vector spot;831 //832 // glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);833 // glShadeModel(GL_SMOOTH); // Enable Smooth Shading834 // glEnable(GL_LIGHTING); // Enable Light One835 // glEnable(GL_DEPTH_TEST); // Enables Depth Testing836 // glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do837 // glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations838 //839 // // 3d viewport840 // if (MultiViewEnabled)841 // glViewport( 0, 0, (GLint)width/2, (GLint)height/2 );842 // else843 // glViewport( 0, 0, (GLint)width, (GLint)height );844 // glMatrixMode( GL_PROJECTION );845 // glLoadIdentity();846 // glFrustum( -1.0, 1.0, -1.0, 1.0, 1.0, 50.0 );847 // glMatrixMode( GL_MODELVIEW );848 // glLoadIdentity();849 //850 // // calculate point of view and direction851 // glTranslated(position[0],position[1],position[2]);852 // glTranslated(0.0, 0.0, -scale);853 // glRotated(xRot, 1.0, 0.0, 0.0);854 // glRotated(yRot, 0.0, 1.0, 0.0);855 // glRotated(zRot, 0.0, 0.0, 1.0);856 //857 // // render scene858 // glCallList(object);859 //860 // // enable light861 // glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light862 // glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light863 // glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light864 // glEnable(GL_LIGHT1); // Enable Light One865 //866 // if (MultiViewEnabled) {867 // // xy view port868 // glViewport( (GLint)width/2, 0, (GLint)width/2, (GLint)height/2 );869 // glMatrixMode( GL_PROJECTION );870 // glLoadIdentity();871 // glScalef(1./scale, 1./scale,1./scale);872 // glOrtho(0, width/2, 0, height/2, 0,0);873 // glMatrixMode( GL_MODELVIEW );874 // glLoadIdentity();875 //876 // // calculate point of view and direction877 // view = position;878 // spot = Vector(0.,0.,scale);879 // top = Vector(0.,1.,0.);880 // gluLookAt(881 // spot[0], spot[1], spot[2],882 // view[0], view[1], view[2],883 // top[0], top[1], top[2]);884 //885 // // enable light886 // glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light887 // glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light888 // glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light889 // glEnable(GL_LIGHT1); // Enable Light One890 //891 // // render scene892 // glCallList(object);893 //894 // // xz viewport895 // glViewport( 0, (GLint)height/2, (GLint)width/2, (GLint)height/2 );896 // glMatrixMode( GL_PROJECTION );897 // glLoadIdentity();898 // glScalef(1./scale, 1./scale,1./scale);899 // glOrtho(0, width/2, 0, height/2, 0,0);900 // glMatrixMode( GL_MODELVIEW );901 // glLoadIdentity();902 //903 // // calculate point of view and direction904 // view = position;905 // spot = Vector(0.,scale,0.);906 // top = Vector(1.,0.,0.);907 // gluLookAt(908 // spot[0], spot[1], spot[2],909 // view[0], view[1], view[2],910 // top[0], top[1], top[2]);911 //912 // // enable light913 // glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light914 // glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light915 // glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light916 // glEnable(GL_LIGHT1); // Enable Light One917 //918 // // render scene919 // glCallList(object);920 //921 // //yz viewport922 // glViewport( (GLint)width/2, (GLint)height/2, (GLint)width/2, (GLint)height/2 );923 // glMatrixMode( GL_PROJECTION );924 // glLoadIdentity();925 // glScalef(1./scale, 1./scale,1./scale);926 // glOrtho(0, width/2, 0, height/2, 0,0);927 // glMatrixMode( GL_MODELVIEW );928 // glLoadIdentity();929 //930 // // calculate point of view and direction931 // view= position;932 // spot = Vector(scale,0.,0.);933 // top = Vector(0.,1.,0.);934 // gluLookAt(935 // spot[0], spot[1], spot[2],936 // view[0], view[1], view[2],937 // top[0], top[1], top[2]);938 //939 // // enable light940 // glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light941 // glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light942 // glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light943 // glEnable(GL_LIGHT1); // Enable Light One944 //945 // // render scene946 // glCallList(object);947 // }948 // //CoordinatesBar->setText( QString ("X: %1, Y: %2, Z: %3").arg(position[0]).arg(position[1]).arg(position[2]) );949 //}950 //951 ////void polarView{GLdouble distance, GLdouble twist,952 //// GLdouble elevation, GLdouble azimuth)953 ////{954 //// glTranslated(0.0, 0.0, -distance);955 //// glRotated(-twist, 0.0, 0.0, 1.0);956 //// glRotated(-elevation, 1.0, 0.0, 0.0);957 //// glRotated(azimuth, 0.0, 0.0, 1.0);958 ////}959 //960 ///** Make a sphere.961 // * \param x position962 // * \param radius radius963 // * \param color[3] color rgb values964 // */965 //void GLMoleculeView::makeSphere(const Vector &x, double radius, const unsigned char color[3])966 //{967 // float blueMaterial[] = { 255./(float)color[0], 255./(float)color[1], 255./(float)color[2], 1 }; // need to recast from [0,255] with integers into [0,1] with floats968 // GLUquadricObj* q = gluNewQuadric ();969 // gluQuadricOrientation(q, GLU_OUTSIDE);970 //971 // std::cout << "Setting sphere at " << x << " with color r"972 // << (int)color[0] << ",g" << (int)color[1] << ",b" << (int)color[2] << "." << endl;973 //974 // glPushMatrix();975 // glTranslatef( x[0], x[1], x[2]);976 //// glRotatef( xRot, 1.0, 0.0, 0.0);977 //// glRotatef( yRot, 0.0, 1.0, 0.0);978 //// glRotatef( zRot, 0.0, 0.0, 1.0);979 // glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blueMaterial);980 // gluSphere (q, (GLdouble)radius, 10, 10);981 // glPopMatrix();982 //}983 //984 ///** Make a cylinder.985 // * \param x origin986 // * \param y direction987 // * \param radius thickness988 // * \param height length989 // * \color[3] color rgb values990 // */991 //void GLMoleculeView::makeCylinder(const Vector &x, const Vector &y, double radius, double height, const unsigned char color[3])992 //{993 // float blueMaterial[] = { 255./(float)color[0], 255./(float)color[1], 255./(float)color[2], 1 };994 // GLUquadricObj* q = gluNewQuadric ();995 // gluQuadricOrientation(q, GLU_OUTSIDE);996 // Vector a,b;997 // Vector OtherAxis;998 // double alpha;999 // a = x - y;1000 // // construct rotation axis1001 // b = a;1002 // b.VectorProduct(Z);1003 // Line axis(zeroVec, b);1004 // // calculate rotation angle1005 // alpha = a.Angle(Z);1006 // // construct other axis to check right-hand rule1007 // OtherAxis = b;1008 // OtherAxis.VectorProduct(Z);1009 // // assure right-hand rule for the rotation1010 // if (a.ScalarProduct(OtherAxis) < MYEPSILON)1011 // alpha = M_PI-alpha;1012 // // check1013 // Vector a_rotated = axis.rotateVector(a, alpha);1014 // std::cout << "Setting cylinder from "// << x << " to " << y1015 // << a << " to " << a_rotated << " around " << b << " by " << alpha/M_PI*180. << ", respectively, "1016 // << " with color r"1017 // << (int)color[0] << ",g" << (int)color[1] << ",b" << (int)color[2] << "." << endl;1018 //1019 // glPushMatrix();1020 // glTranslatef( x[0], x[1], x[2]);1021 // glRotatef( alpha/M_PI*180., b[0], b[1], b[2]);1022 // glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blueMaterial);1023 // gluCylinder (q, (GLdouble)radius, (GLdouble)radius, (GLdouble)height, 10, 10);1024 // glPopMatrix();1025 //}1026 //1027 ///** Defines the display CallList.1028 // * Goes through all molecules and their atoms and adds spheres for atoms and cylinders1029 // * for bonds. Heeds GLMoleculeView::SelectedAtom and GLMoleculeView::SelectedMolecule.1030 // */1031 //void GLMoleculeView::initializeGL()1032 //{1033 // double x[3] = {-1, 0, -10};1034 // unsigned char white[3] = {255,255,255};1035 // Vector Position, OtherPosition;1036 // QSize window = size();1037 // width = window.width();1038 // height = window.height();1039 // std::cout << "Setting width to " << width << " and height to " << height << std::endl;1040 // GLfloat shininess[] = { 0.0 };1041 // GLfloat specular[] = { 0, 0, 0, 1 };1042 // glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Let OpenGL clear to black1043 // object = glGenLists(1);1044 // glNewList( object, GL_COMPILE );1045 // glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);1046 // glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);1047 //1048 // const std::vector<molecule*> &molecules = World::getInstance().getAllMolecules();1049 //1050 // if (molecules.size() > 0) {1051 // for (std::vector<molecule*>::const_iterator Runner = molecules.begin();1052 // Runner != molecules.end();1053 // Runner++) {1054 // for (molecule::const_iterator atomiter = (*Runner)->begin();1055 // atomiter != (*Runner)->end();1056 // ++atomiter) {1057 // // create atom1058 // const element *ptr = (*atomiter)->getType();1059 // boost::shared_ptr<Vector> MolCenter((*Runner)->DetermineCenterOfGravity());1060 // Position = (*atomiter)->getPosition() - *MolCenter;1061 // const unsigned char* color = NULL;1062 // if ((World::getInstance().isSelected(*atomiter)) || (World::getInstance().isSelected((*Runner))))1063 // color = SelectionColor;1064 // else1065 // color = ptr->getColor();1066 // makeSphere(Position, ptr->getVanDerWaalsRadius()*0.25, color);1067 //1068 // // create bonds1069 // const BondList &bonds = (*atomiter)->getListOfBonds();1070 // for (BondList::const_iterator bonditer = bonds.begin();1071 // bonditer != bonds.end();1072 // ++bonditer) {1073 // if ((*bonditer)->leftatom->getId() == (*atomiter)->getId()) {1074 // Position = (*bonditer)->leftatom->getPosition() - *MolCenter;1075 // OtherPosition = (*bonditer)->rightatom->getPosition() - *MolCenter;1076 // const double distance = sqrt(Position.DistanceSquared(OtherPosition))/2.;1077 // const unsigned char *color1 = (*bonditer)->leftatom->getType()->getColor();1078 // const unsigned char *color2 = (*bonditer)->rightatom->getType()->getColor();1079 // makeCylinder(Position, OtherPosition, 0.1, distance, color1);1080 // makeCylinder(OtherPosition, Position, 0.1, distance, color2);1081 // }1082 // }1083 // }1084 // }1085 // } else {1086 // makeSphere( x,1, white);1087 // }1088 // glEndList();1089 //}1090 //1091 //1092 ///* ================================== SLOTS ============================== */1093 //1094 ///** Initializes some public variables.1095 // * \param *ptr pointer to QLabel statusbar1096 // */1097 //void GLMoleculeView::init(QLabel *ptr)1098 //{1099 // StatusBar = ptr;1100 //}1101 //1102 ///** Initializes the viewport statusbar.1103 // * \param *ptr pointer to QLabel for showing view pointcoordinates.1104 // */1105 //void GLMoleculeView::initCoordinates(QLabel *ptr)1106 //{1107 // CoordinatesBar = ptr;1108 //}1109 //1110 ///** Slot to be called when to initialize GLMoleculeView::MolData.1111 // */1112 //void GLMoleculeView::createView( )1113 //{1114 // initializeGL();1115 // updateGL();1116 //}1117 //1118 ///** Slot of window is resized.1119 // * Copies new width and height to GLMoleculeView::width and GLMoleculeView::height and calls updateGL().1120 // * \param w new width of window1121 // * \param h new height of window1122 // */1123 //void GLMoleculeView::resizeGL( int w, int h )1124 //{1125 // width = w;1126 // height = h;1127 // updateGL();1128 //}1129 //1130 ///** Sets x rotation angle.1131 // * sets GLMoleculeView::xRot and calls updateGL().1132 // * \param degrees new rotation angle in degrees1133 // */1134 //void GLMoleculeView::setXRotation( int degrees )1135 //{1136 // xRot = (GLfloat)(degrees % 360);1137 // updateGL();1138 //}1139 //1140 //1141 ///** Sets y rotation angle.1142 // * sets GLMoleculeView::yRot and calls updateGL().1143 // * \param degrees new rotation angle in degrees1144 // */1145 //void GLMoleculeView::setYRotation( int degrees )1146 //{1147 // yRot = (GLfloat)(degrees % 360);1148 // updateGL();1149 //}1150 //1151 //1152 ///** Sets z rotation angle.1153 // * sets GLMoleculeView::zRot and calls updateGL().1154 // * \param degrees new rotation angle in degrees1155 // */1156 //void GLMoleculeView::setZRotation( int degrees )1157 //{1158 // zRot = (GLfloat)(degrees % 360);1159 // updateGL();1160 //}1161 //1162 ///** Sets the scale of the scene.1163 // * sets GLMoleculeView::scale and calls updateGL().1164 // * \param distance distance divided by 100 is the new scale1165 // */1166 //void GLMoleculeView::setScale( int distance )1167 //{1168 // scale = (GLfloat)(distance / 100.);1169 // updateGL();1170 //}1171 //1172 ///** Update the ambient light.1173 // * \param light[4] light strength per axis and position (w)1174 // */1175 //void GLMoleculeView::setLightAmbient( int *light )1176 //{1177 // for(int i=0;i<4;i++)1178 // LightAmbient[i] = light[i];1179 // updateGL();1180 //}1181 //1182 ///** Update the diffuse light.1183 // * \param light[4] light strength per axis and position (w)1184 // */1185 //void GLMoleculeView::setLightDiffuse( int *light )1186 //{1187 // for(int i=0;i<4;i++)1188 // LightDiffuse[i] = light[i];1189 // updateGL();1190 //}1191 //1192 ///** Update the position of light.1193 // * \param light[4] light strength per axis and position (w)1194 // */1195 //void GLMoleculeView::setLightPosition( int *light )1196 //{1197 // for(int i=0;i<4;i++)1198 // LightPosition[i] = light[i];1199 // updateGL();1200 //}1201 //1202 ///** Toggles the boolean GLMoleculeView::MultiViewEnabled.1203 // * Flips the boolean and calls updateGL().1204 // */1205 //void GLMoleculeView::toggleMultiViewEnabled ( )1206 //{1207 // MultiViewEnabled = !MultiViewEnabled;1208 // cout << "Setting MultiView to " << MultiViewEnabled << "." << endl;1209 // updateGL();1210 //}1211 //1212 ///** Launch a dialog to configure the lights.1213 // */1214 //void GLMoleculeView::createDialogLight()1215 //{1216 //// Ui_DialogLight *Lights = new Ui_DialogLight();1217 //// if (Lights == NULL)1218 //// return;1219 //// // Set up the dynamic dialog here1220 //// QLineEdit *Field = NULL;1221 //// Field = Lights->findChild<QLineEdit *>("LightPositionX");1222 //// if (Field) Field->setText( QString("%1").arg(LightPosition[0]) );1223 //// Field = Lights->findChild<QLineEdit *>("LightPositionY");1224 //// if (Field) Field->setText( QString("%1").arg(LightPosition[1]) );1225 //// Field = Lights->findChild<QLineEdit *>("LightPositionZ");1226 //// if (Field) Field->setText( QString("%1").arg(LightPosition[2]) );1227 //// Field = Lights->findChild<QLineEdit *>("LightPositionW");1228 //// if (Field) Field->setText( QString("%1").arg(LightPosition[3]) );1229 ////1230 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseX");1231 //// if (Field) Field->setText( QString("%1").arg(LightDiffuse[0]) );1232 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseY");1233 //// if (Field) Field->setText( QString("%1").arg(LightDiffuse[1]) );1234 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseZ");1235 //// if (Field) Field->setText( QString("%1").arg(LightDiffuse[2]) );1236 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseW");1237 //// if (Field) Field->setText( QString("%1").arg(LightDiffuse[3]) );1238 ////1239 //// Field = Lights->findChild<QLineEdit *>("LightAmbientX");1240 //// if (Field) Field->setText( QString("%1").arg(LightAmbient[0]) );1241 //// Field = Lights->findChild<QLineEdit *>("LightAmbientY");1242 //// if (Field) Field->setText( QString("%1").arg(LightAmbient[1]) );1243 //// Field = Lights->findChild<QLineEdit *>("LightAmbientZ");1244 //// if (Field) Field->setText( QString("%1").arg(LightAmbient[2]) );1245 //// Field = Lights->findChild<QLineEdit *>("LightAmbientW");1246 //// if (Field) Field->setText( QString("%1").arg(LightAmbient[3]) );1247 ////1248 //// if ( Lights->exec() ) {1249 //// //cout << "User accepted.\n";1250 //// // The user accepted, act accordingly1251 //// Field = Lights->findChild<QLineEdit *>("LightPositionX");1252 //// if (Field) LightPosition[0] = Field->text().toDouble();1253 //// Field = Lights->findChild<QLineEdit *>("LightPositionY");1254 //// if (Field) LightPosition[1] = Field->text().toDouble();1255 //// Field = Lights->findChild<QLineEdit *>("LightPositionZ");1256 //// if (Field) LightPosition[2] = Field->text().toDouble();1257 //// Field = Lights->findChild<QLineEdit *>("LightPositionW");1258 //// if (Field) LightPosition[3] = Field->text().toDouble();1259 ////1260 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseX");1261 //// if (Field) LightDiffuse[0] = Field->text().toDouble();1262 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseY");1263 //// if (Field) LightDiffuse[1] = Field->text().toDouble();1264 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseZ");1265 //// if (Field) LightDiffuse[2] = Field->text().toDouble();1266 //// Field = Lights->findChild<QLineEdit *>("LightDiffuseW");1267 //// if (Field) LightDiffuse[3] = Field->text().toDouble();1268 ////1269 //// Field = Lights->findChild<QLineEdit *>("LightAmbientX");1270 //// if (Field) LightAmbient[0] = Field->text().toDouble();1271 //// Field = Lights->findChild<QLineEdit *>("LightAmbientY");1272 //// if (Field) LightAmbient[1] = Field->text().toDouble();1273 //// Field = Lights->findChild<QLineEdit *>("LightAmbientZ");1274 //// if (Field) LightAmbient[2] = Field->text().toDouble();1275 //// Field = Lights->findChild<QLineEdit *>("LightAmbientW");1276 //// if (Field) LightAmbient[3] = Field->text().toDouble();1277 //// updateGL();1278 //// } else {1279 //// //cout << "User reclined.\n";1280 //// }1281 //// delete(Lights);1282 //}1283 //1284 ///** Slot for event of pressed mouse button.1285 // * Switch discerns between buttons and stores position of event in GLMoleculeView::LeftButtonPos,1286 // * GLMoleculeView::MiddleButtonPos or GLMoleculeView::RightButtonPos.1287 // * \param *event structure containing information of the event1288 // */1289 //void GLMoleculeView::mousePressEvent(QMouseEvent *event)1290 //{1291 // std::cout << "MousePressEvent." << endl;1292 // QPoint *pos = NULL;1293 // switch (event->button()) { // get the right array1294 // case Qt::LeftButton:1295 // pos = &LeftButtonPos;1296 // std::cout << "Left Button" << endl;1297 // break;1298 // case Qt::MidButton:1299 // pos = &MiddleButtonPos;1300 // std::cout << "Middle Button" << endl;1301 // break;1302 // case Qt::RightButton:1303 // pos = &RightButtonPos;1304 // std::cout << "Right Button" << endl;1305 // break;1306 // default:1307 // break;1308 // }1309 // if (pos) { // store the position1310 // pos->setX(event->pos().x());1311 // pos->setY(event->pos().y());1312 // std::cout << "Stored src position is (" << pos->x() << "," << pos->y() << ")." << endl;1313 // } else {1314 // std::cout << "pos is NULL." << endl;1315 // }1316 //}1317 //1318 ///** Slot for event of pressed mouse button.1319 // * Switch discerns between buttons:1320 // * -# Left Button: Rotates the view of the GLMoleculeView, relative to GLMoleculeView::LeftButtonPos.1321 // * -# Middle Button: nothing1322 // * -# Right Button: Shifts the selected molecule or atom, relative to GLMoleculeView::RightButtonPos.1323 // * \param *event structure containing information of the event1324 // */1325 //void GLMoleculeView::mouseReleaseEvent(QMouseEvent *event)1326 //{1327 // std::cout << "MouseReleaseEvent." << endl;1328 // QPoint *srcpos = NULL;1329 // QPoint destpos = event->pos();1330 // int Width = (MultiViewEnabled) ? width/2 : width;1331 // int Height = (MultiViewEnabled) ? height/2 : height;1332 // std::cout << "Received dest position is (" << destpos.x() << "," << destpos.y() << ")." << endl;1333 // switch (event->button()) { // get the right array1334 // case Qt::LeftButton: // LeftButton rotates the view1335 // srcpos = &LeftButtonPos;1336 // std::cout << "Left Button" << endl;1337 // if (srcpos) { // subtract the position and act1338 // std::cout << "Stored src position is (" << srcpos->x() << "," << srcpos->y() << ")." << endl;1339 // destpos -= *srcpos;1340 // std::cout << "Resulting diff position is (" << destpos.x() << "," << destpos.y() << ")." << endl;1341 // std::cout << "Width and Height are " << Width << "," << Height << "." << endl;1342 //1343 // int pos = (int)floor((double)srcpos->x()/(double)Width) + ((int)floor((double)srcpos->y()/(double)Height))*2;1344 // if ((MultiViewEnabled) && (pos != 2)) { // means four regions, and we are in a shifting one1345 // // switch between three regions1346 // // decide into which of the four screens the initial click has been made1347 // std::cout << "Position is " << pos << "." << endl;1348 // switch(pos) {1349 // case 0: // lower left = xz1350 // position[0] += -destpos.y()/100.;1351 // position[2] += destpos.x()/100.;1352 // break;1353 // case 1: // lower right = yz1354 // position[1] += -destpos.y()/100.;1355 // position[2] += -destpos.x()/100.;1356 // break;1357 // case 2: // upper left = projected1358 // std::cout << "This is impossible: Shifting in the projected region, we should rotate!." << endl;1359 // break;1360 // case 3: // upper right = xy1361 // position[0] += destpos.x()/100.;1362 // position[1] += -destpos.y()/100.;1363 // break;1364 // default:1365 // std::cout << "click was not in any of the four regions." << endl;1366 // break;1367 // }1368 // updateGL();1369 // } else { // we are in rotation region1370 // QWidget *Parent = parentWidget();1371 // QSlider *sliderX = Parent->findChild<QSlider *>("sliderX");1372 // QSlider *sliderY = Parent->findChild<QSlider *>("sliderY");1373 // std::cout << sliderX << " and " << sliderY << endl;1374 // if (sliderX) {1375 // int xrange = sliderX->maximum() - sliderX->minimum();1376 // double xValue = ((destpos.x() + Width) % Width);1377 // xValue *= (double)xrange/(double)Width;1378 // xValue += sliderX->value();1379 // int xvalue = (int) xValue % xrange;1380 // std::cout << "Setting x to " << xvalue << " within range " << xrange << "." << endl;1381 // setXRotation(xvalue);1382 // sliderX->setValue(xvalue);1383 // } else {1384 // std::cout << "sliderX is NULL." << endl;1385 // }1386 // if (sliderY) {1387 // int yrange = sliderY->maximum() - sliderY->minimum();1388 // double yValue = ((destpos.y() + Height) % Height);1389 // yValue *= (double)yrange/(double)Height;1390 // yValue += sliderY->value();1391 // int yvalue = (int) yValue % yrange;1392 // std::cout << "Setting y to " << yvalue << " within range " << yrange << "." << endl;1393 // setYRotation(yvalue);1394 // sliderY->setValue(yvalue);1395 // } else {1396 // std::cout << "sliderY is NULL." << endl;1397 // }1398 // }1399 // } else {1400 // std::cout << "srcpos is NULL." << endl;1401 // }1402 // break;1403 //1404 // case Qt::MidButton: // MiddleButton has no function so far1405 // srcpos = &MiddleButtonPos;1406 // std::cout << "Middle Button" << endl;1407 // if (srcpos) { // subtract the position and act1408 // QWidget *Parent = parentWidget();1409 // QSlider *sliderZ = Parent->findChild<QSlider *>("sliderZ");1410 // QSlider *sliderScale = Parent->findChild<QSlider *>("sliderScale");1411 // std::cout << sliderZ << " and " << sliderScale << endl;1412 // std::cout << "Stored src position is (" << srcpos->x() << "," << srcpos->y() << ")." << endl;1413 // destpos -= *srcpos;1414 // std::cout << "Resulting diff position is (" << destpos.x() << "," << destpos.y() << ")." << endl;1415 // std::cout << "Width and Height are " << Width << "," << Height << "." << endl;1416 // if (sliderZ) {1417 // int xrange = sliderZ->maximum() - sliderZ->minimum();1418 // double xValue = ((destpos.x() + Width) % Width);1419 // xValue *= (double)xrange/(double)Width;1420 // xValue += sliderZ->value();1421 // int xvalue = (int) xValue % xrange;1422 // std::cout << "Setting x to " << xvalue << " within range " << xrange << "." << endl;1423 // setZRotation(xvalue);1424 // sliderZ->setValue(xvalue);1425 // } else {1426 // std::cout << "sliderZ is NULL." << endl;1427 // }1428 // if (sliderScale) {1429 // int yrange = sliderScale->maximum() - sliderScale->minimum();1430 // double yValue = ((destpos.y() + Height) % Height);1431 // yValue *= (double)yrange/(double)Height;1432 // yValue += sliderScale->value();1433 // int yvalue = (int) yValue % yrange;1434 // std::cout << "Setting y to " << yvalue << " within range " << yrange << "." << endl;1435 // setScale(yvalue);1436 // sliderScale->setValue(yvalue);1437 // } else {1438 // std::cout << "sliderScale is NULL." << endl;1439 // }1440 // } else {1441 // std::cout << "srcpos is NULL." << endl;1442 // }1443 // break;1444 // break;1445 //1446 // case Qt::RightButton: // RightButton moves eitstdher the selected molecule or atom1447 // srcpos = &RightButtonPos;1448 // std::cout << "Right Button" << endl;1449 // if (srcpos) { // subtract the position and act1450 // std::cout << "Stored src position is (" << srcpos->x() << "," << srcpos->y() << ")." << endl;1451 // destpos -= *srcpos;1452 // std::cout << "Resulting diff position is (" << destpos.x() << "," << destpos.y() << ")." << endl;1453 // std::cout << "Width and Height are " << Width << "," << Height << "." << endl;1454 // if (MultiViewEnabled) {1455 // // which vector to change1456 // Vector SelectedPosition;1457 // const std::vector<atom*> &SelectedAtoms = World::getInstance().getSelectedAtoms();1458 // const std::vector<molecule*> &SelectedMolecules = World::getInstance().getSelectedMolecules();1459 // if (SelectedMolecules.size()) {1460 // if (SelectedAtoms.size())1461 // SelectedPosition = (*SelectedAtoms.begin())->getPosition();1462 // else1463 // SelectedPosition = (*(*SelectedMolecules.begin())->begin())->getPosition();1464 // }1465 // // decide into which of the four screens the initial click has been made1466 // int pos = (int)floor((double)srcpos->x()/(double)Width) + ((int)floor((double)srcpos->y()/(double)Height))*2;1467 // if (!SelectedPosition.IsZero()) {1468 // std::cout << "Position is " << pos << "." << endl;1469 // switch(pos) {1470 // case 0: // lower left = xz1471 // SelectedPosition[0] += -destpos.y()/100.;1472 // SelectedPosition[2] += destpos.x()/100.;1473 // break;1474 // case 1: // lower right = yz1475 // SelectedPosition[1] += -destpos.y()/100.;1476 // SelectedPosition[2] += -destpos.x()/100.;1477 // break;1478 // case 2: // upper left = projected1479 // SelectedPosition[0] += destpos.x()/100.;1480 // SelectedPosition[1] += destpos.y()/100.;1481 // SelectedPosition[2] += destpos.y()/100.;1482 // break;1483 // case 3: // upper right = xy1484 // SelectedPosition[0] += destpos.x()/100.;1485 // SelectedPosition[1] += -destpos.y()/100.;1486 // break;1487 // default:1488 // std::cout << "click was not in any of the four regions." << endl;1489 // break;1490 // }1491 // } else {1492 // std::cout << "Nothing selected." << endl;1493 // }1494 // // update Tables1495 // if (SelectedMolecules.size()) {1496 // isSignaller = true;1497 // if (SelectedAtoms.size())1498 // emit notifyAtomChanged( (*SelectedMolecules.begin()), (*SelectedAtoms.begin()), AtomPosition);1499 // else1500 // emit notifyMoleculeChanged( (*SelectedMolecules.begin()), MoleculePosition );1501 // }1502 // // update graphic1503 // initializeGL();1504 // updateGL();1505 // } else {1506 // cout << "MultiView is not enabled." << endl;1507 // }1508 // } else {1509 // cout << "srcpos is NULL." << endl;1510 // }1511 // break;1512 //1513 // default:1514 // break;1515 // }1516 //}1517 //1518 ///* ======================================== SLOTS ================================ */1519 //1520 ///** Hear announcement of selected molecule.1521 // * \param *mol pointer to selected molecule1522 // */1523 //void GLMoleculeView::hearMoleculeSelected(molecule *mol)1524 //{1525 // if (isSignaller) { // if we emitted the signal, return1526 // isSignaller = false;1527 // return;1528 // }1529 // initializeGL();1530 // updateGL();1531 //};1532 //1533 ///** Hear announcement of selected atom.1534 // * \param *mol pointer to molecule containing atom1535 // * \param *Walker pointer to selected atom1536 // */1537 //void GLMoleculeView::hearAtomSelected(molecule *mol, atom *Walker)1538 //{1539 // if (isSignaller) { // if we emitted the signal, return1540 // isSignaller = false;1541 // return;1542 // }1543 // initializeGL();1544 // updateGL();1545 //};1546 //1547 ///** Hear announcement of changed molecule.1548 // * \param *mol pointer to changed molecule1549 // * \param type of change1550 // */1551 //void GLMoleculeView::hearMoleculeChanged(molecule *mol, enum ChangesinMolecule type)1552 //{1553 // if (isSignaller) { // if we emitted the signal, return1554 // isSignaller = false;1555 // return;1556 // }1557 // initializeGL();1558 // updateGL();1559 //};1560 //1561 ///** Hear announcement of changed atom.1562 // * \param *mol pointer to molecule containing atom1563 // * \param *Walker pointer to changed atom1564 // * \param type type of change1565 // */1566 //void GLMoleculeView::hearAtomChanged(molecule *mol, atom *Walker, enum ChangesinAtom type)1567 //{1568 // if (isSignaller) { // if we emitted the signal, return1569 // isSignaller = false;1570 // return;1571 // }1572 // initializeGL();1573 // updateGL();1574 //};1575 //1576 ///** Hear announcement of changed element.1577 // * \param *Runner pointer to changed element1578 // * \param type of change1579 // */1580 //void GLMoleculeView::hearElementChanged(element *Runner, enum ChangesinElement type)1581 //{1582 // if (isSignaller) { // if we emitted the signal, return1583 // isSignaller = false;1584 // return;1585 // }1586 // switch(type) {1587 // default:1588 // case ElementName:1589 // case ElementSymbol:1590 // case ElementMass:1591 // case ElementValence:1592 // case ElementZ:1593 // break;1594 // case ElementCovalent:1595 // case ElementVanderWaals:1596 // initializeGL();1597 // updateGL();1598 // break;1599 // }1600 //};1601 //1602 ///** Hear announcement of added molecule.1603 // * \param *mol pointer to added molecule1604 // */1605 //void GLMoleculeView::hearMoleculeAdded(molecule *mol)1606 //{1607 // if (isSignaller) { // if we emitted the signal, return1608 // isSignaller = false;1609 // return;1610 // }1611 // initializeGL();1612 // updateGL();1613 //};1614 //1615 ///** Hear announcement of added atom.1616 // * \param *mol pointer to molecule containing atom1617 // * \param *Walker pointer to added atom1618 // */1619 //void GLMoleculeView::hearAtomAdded(molecule *mol, atom *Walker)1620 //{1621 // if (isSignaller) { // if we emitted the signal, return1622 // isSignaller = false;1623 // return;1624 // }1625 // initializeGL();1626 // updateGL();1627 //};1628 //1629 ///** Hear announcement of removed molecule.1630 // * \param *mol pointer to removed molecule1631 // */1632 //void GLMoleculeView::hearMoleculeRemoved(molecule *mol)1633 //{1634 // if (isSignaller) { // if we emitted the signal, return1635 // isSignaller = false;1636 // return;1637 // }1638 // initializeGL();1639 // updateGL();1640 //};1641 //1642 ///** Hear announcement of removed atom.1643 // * \param *mol pointer to molecule containing atom1644 // * \param *Walker pointer to removed atom1645 // */1646 //void GLMoleculeView::hearAtomRemoved(molecule *mol, atom *Walker)1647 //{1648 // if (isSignaller) { // if we emitted the signal, return1649 // isSignaller = false;1650 // return;1651 // }1652 // initializeGL();1653 // updateGL();1654 //};1655 //1656 //void GLMoleculeView::update(Observable *publisher)1657 //{1658 // initializeGL();1659 // updateGL();1660 //}1661 //1662 ///**1663 // * This method is called when a special named change1664 // * of the Observable occured1665 // */1666 //void GLMoleculeView::recieveNotification(Observable *publisher, Notification_ptr notification)1667 //{1668 // initializeGL();1669 // updateGL();1670 //}1671 //1672 ///**1673 // * This method is called when the observed object is destroyed.1674 // */1675 //void GLMoleculeView::subjectKilled(Observable *publisher)1676 //{1677 //1678 //}1679 //1680 //1681 //// new stuff1682 //1683 ///** Returns the ref to the Material for element No \a from the map.1684 // *1685 // * \note We create a new one if the element is missing.1686 // *1687 // * @param no element no1688 // * @return ref to QGLMaterial1689 // */1690 //QGLMaterial* GLMoleculeView::getMaterial(size_t no)1691 //{1692 // if (ElementNoMaterialMap.find(no) != ElementNoMaterialMap.end()){1693 // // get present one1694 //1695 // } else {1696 // ASSERT( (no >= 0) && (no < MAX_ELEMENTS),1697 // "GLMoleculeView::getMaterial() - Element no "+toString(no)+" is invalid.");1698 // // create new one1699 // LOG(1, "Creating new material for element "+toString(no)+".");1700 // QGLMaterial *newmaterial = new QGLMaterial(this);1701 // periodentafel *periode = World::getInstance().getPeriode();1702 // element *desiredelement = periode->FindElement(no);1703 // ASSERT(desiredelement != NULL,1704 // "GLMoleculeView::getMaterial() - desired element "+toString(no)+" not present in periodentafel.");1705 // const unsigned char* color = desiredelement->getColor();1706 // newmaterial->setAmbientColor( QColor(color[0], color[1], color[2]) );1707 // newmaterial->setSpecularColor( QColor(60, 60, 60) );1708 // newmaterial->setShininess( QColor(128) );1709 // ElementNoMaterialMap.insert( no, newmaterial);1710 // }1711 //}1712 //1713 //QGLSceneNode* GLMoleculeView::getAtom(size_t no)1714 //{1715 // // first some sensibility checks1716 // ASSERT(World::getInstance().getAtom(AtomById(no)) != NULL,1717 // "GLMoleculeView::getAtom() - desired atom "1718 // +toString(no)+" not present in the World.");1719 // ASSERT(AtomsinSceneMap.find(no) != AtomsinSceneMap.end(),1720 // "GLMoleculeView::getAtom() - desired atom "1721 // +toString(no)+" not present in the AtomsinSceneMap.");1722 //1723 // return AtomsinSceneMap[no];1724 //}1725 //1726 //QGLSceneNode* GLMoleculeView::getBond(size_t leftno, size_t rightno)1727 //{1728 // // first some sensibility checks1729 // ASSERT(World::getInstance().getAtom(AtomById(leftno)) != NULL,1730 // "GLMoleculeView::getAtom() - desired atom "1731 // +toString(leftno)+" of bond not present in the World.");1732 // ASSERT(World::getInstance().getAtom(AtomById(rightno)) != NULL,1733 // "GLMoleculeView::getAtom() - desired atom "1734 // +toString(rightno)+" of bond not present in the World.");1735 // ASSERT(AtomsinSceneMap.find(leftno) != AtomsinSceneMap.end(),1736 // "GLMoleculeView::getAtom() - desired atom "1737 // +toString(leftno)+" of bond not present in the AtomsinSceneMap.");1738 // ASSERT(AtomsinSceneMap.find(rightno) != AtomsinSceneMap.end(),1739 // "GLMoleculeView::getAtom() - desired atom "1740 // +toString(rightno)+" of bond not present in the AtomsinSceneMap.");1741 // ASSERT(leftno == rightno,1742 // "GLMoleculeView::getAtom() - bond must not be between the same atom: "1743 // +toString(leftno)+" == "+toString(rightno)+".");1744 //1745 // // then return with smaller index first1746 // if (leftno > rightno)1747 // return AtomsinSceneMap[ make_pair(rightno, leftno) ];1748 // else1749 // return AtomsinSceneMap[ make_pair(leftno, rightno) ];1750 //}1751 // -
src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp
r8859b5 r7f1b51 127 127 }; 128 128 129 130 131 //#include "CodePatterns/Observer/Observer.hpp"132 //#include "LinearAlgebra/Vector.hpp"133 //#include "changetypes.hpp"134 //135 //class atom;136 //class element;137 //class molecule;138 //139 //class GLMoleculeView : public QGLWidget, public Observer140 //{141 // Q_OBJECT142 //143 //public:144 //145 // GLMoleculeView( QWidget* parent);146 // ~GLMoleculeView();147 //148 //public slots:149 //150 // void setXRotation( int degrees );151 // void setYRotation( int degrees );152 // void setZRotation( int degrees );153 // void setScale( int distance );154 // void setLightPosition( int *light );155 // void setLightDiffuse( int *light );156 // void setLightAmbient( int *light );157 // void createDialogLight();158 // void toggleMultiViewEnabled();159 //160 // void init( QLabel *ptr );161 // void initCoordinates(QLabel *ptr);162 // void createView();163 // void hearMoleculeSelected(molecule *mol);164 // void hearAtomSelected(molecule *mol, atom *Walker);165 // void hearMoleculeChanged(molecule *mol, enum ChangesinMolecule type);166 // void hearAtomChanged(molecule *mol, atom *Walker, enum ChangesinAtom type);167 // void hearElementChanged(element *Runner, enum ChangesinElement type);168 // void hearMoleculeAdded(molecule *mol);169 // void hearAtomAdded(molecule *mol, atom *Walker);170 // void hearMoleculeRemoved(molecule *mol);171 // void hearAtomRemoved(molecule *mol, atom *Walker);172 //173 //signals:174 // void notifyMoleculeSelected( molecule *mol );175 // void notifyAtomSelected( molecule *mol, atom *Walker );176 // void notifyMoleculeChanged( molecule *mol, enum ChangesinMolecule type );177 // void notifyAtomChanged( molecule *mol, atom *Walker, enum ChangesinAtom type );178 // void notifyElementChanged( element *Runner, enum ChangesinElement type );179 // void notifyMoleculeAdded( molecule *mol);180 // void notifyElementAdded( element *Runner);181 // void notifyAtomAdded( molecule *mol, atom *Walker );182 // void notifyMoleculeRemoved( molecule *mol );183 // void notifyAtomRemoved( molecule *mol, atom *Walker );184 //185 //protected:186 //187 // void initializeGL();188 // void paintGL();189 // void resizeGL( int w, int h );190 // void makeSphere(const Vector &x, double radius, const unsigned char color[3]);191 // void makeCylinder(const Vector &x, const Vector &y, double radius, double height, const unsigned char color[3]);192 // void mousePressEvent(QMouseEvent* event);193 // void mouseReleaseEvent(QMouseEvent* event);194 //195 //public:196 //197 // /** Update function as we are an Observer.198 // *199 // * @param publisher ref to Observable200 // */201 // void update(Observable *publisher);202 //203 // /**204 // * This method is called when a special named change205 // * of the Observable occured206 // */207 // void recieveNotification(Observable *publisher, Notification_ptr notification);208 //209 // /**210 // * This method is called when the observed object is destroyed.211 // */212 // void subjectKilled(Observable *publisher);213 //214 //215 //private:216 //217 // typedef std::map< size_t, node > AtomNodeMap;218 // typedef std::map< std::pair< size_t, size_t> , node > BondNodeMap;219 // typedef std::map< size_t, QGLMaterial *> ElementMaterialMap;220 //221 // ElementMaterialMap ElementNoMaterialMap;222 // AtomNodeMap AtomsinSceneMap;223 // BondNodeMap BondsinSceneMap;224 //225 // QGLMaterial* getMaterial(size_t);226 // QGLSceneNode* getAtom(size_t);227 // QGLSceneNode* getBond(size_t, size_t);228 //229 // // old stuff230 //231 // GLuint object; // call list for the scene to be rendered232 // GLfloat xRot, yRot, zRot, scale; // rotation angles and scaling (zoom)233 // Vector position; //!< position of observer234 // Vector view; //!< point along line of view235 // Vector top; //!< giving upwards direction236 // Vector X,Y,Z; //!< vectors defining the coordinate system237 // int width; //!< width of window238 // int height; //!< height of window239 //240 // QLabel *StatusBar; //!< pointer to status bar for messages241 // QLabel *CoordinatesBar; //!< pointer to coordinates bar for view port242 //243 // GLfloat LightPosition[4]; //!< Light Position244 // GLfloat LightDiffuse[4]; //!< Diffuse Light Values245 // GLfloat LightAmbient[4]; //!< Ambient Light Values246 //247 // QPoint LeftButtonPos; //!< mouse position on mousePressEvent for LeftButton248 // QPoint MiddleButtonPos; //!< mouse position on mousePressEvent for MidButton249 // QPoint RightButtonPos; //!< mouse position on mousePressEvent for RightButton250 //251 // unsigned char SelectionColor[3] ; //!< highlight color252 //253 // bool isSignaller;254 //255 // bool MultiViewEnabled; //!< if true, split screen into four parts with additional xy,xz,yz views256 //};257 258 129 #endif /* GLWORLDVIEW_HPP_ */ -
src/World.cpp
r8859b5 r7f1b51 879 879 delete configuration; 880 880 delete Thermostats; 881 delete homologies; 881 882 } 882 883 -
src/builder.cpp
r8859b5 r7f1b51 53 53 stopQueue(); 54 54 #endif 55 int status = 0; 55 56 if (UIFactory::getInstance().getUIName() == "CommandLine") 56 returnsaveAll();57 return 0;57 status = saveAll(); 58 return status; 58 59 } 59 60 -
src/cleanUp.cpp
r8859b5 r7f1b51 53 53 #include "Fragmentation/Summation/Containers/FragmentationResultContainer.hpp" 54 54 55 #include "Potentials/PotentialFactory.hpp" 56 #include "Potentials/PotentialRegistry.hpp" 57 55 58 #include "RandomNumbers/RandomNumberDistributionFactory.hpp" 56 59 #include "RandomNumbers/RandomNumberEngineFactory.hpp" … … 97 100 FragmentationResultContainer::purgeInstance(); 98 101 Chronos::purgeInstance(); 102 PotentialFactory::purgeInstance(); 103 PotentialRegistry::purgeInstance(); 99 104 RandomNumberDistributionFactory::purgeInstance(); 100 105 RandomNumberEngineFactory::purgeInstance(); -
src/documentation/constructs/filling.dox
r8859b5 r7f1b51 74 74 * the specific implementations of the class \ref Inserter. 75 75 * 76 * \section filling-preparators Filling Preparators 76 77 * 77 * \date 2014-03-10 78 * The filling function depends on quite a number of other instances. In order 79 * to make this a little easier to use, there are so called FillerPreparators 80 * for various purposes: 81 * -# BoxFillerPreparator - fills the simulation domain 82 * -# ShapeSurfaceFillerPreparator - fills on the surface of a selected shape 83 * -# ShapeVolumeFillerPreparator - fills the volume of a selected shape 84 * 85 * These offer various functions to easily install an Inserter, a Mesh, and 86 * necessary FillPredicates. See the Filling Actions such as 87 * MoleCuilder::FillVolumeAction as example. 88 * 89 * \date 2014-09-04 78 90 */ -
src/documentation/tests/tests.dox
r8859b5 r7f1b51 16 16 * \page tests Automated Tests 17 17 * 18 * There are t wokinds of tests:18 * There are three kinds of tests: 19 19 * 20 20 * \li \subpage codetest "Code tests" … … 59 59 * every single test for each and every single commit in the code history before 60 60 * it is pushed to the central repository (git has ample means via \a rebase for 61 * correcting later found errors) .61 * correcting later found errors), both for --disable-debug and --enable-debug. 62 62 * 63 63 * Before a version tag is given (e.g. v1.1.3) it is to be made sure that also … … 65 65 * runs fine and produces a distributable archive. 66 66 * 67 * \date 2011-10-31 67 * Since v1.4.8 valgrind's memcheck tool runs through as well (on all regression 68 * tests). There are three glitches, namely regression tests 28-30 which load 69 * python scripts and cause many PyObject_Free and other errors. These are 70 * ignored. A python suppression file was tried but to no success. 71 * Similarly, a valgrind check prior to giving a version tag is to be made 72 * starting from this version to prevent memory leaks. 73 * 74 * 75 * \date 2014-08-29 68 76 * 69 77 */ -
src/molecule.cpp
r8859b5 r7f1b51 751 751 }; 752 752 753 /** Sets the molecule::cell_size to the components of \a *dim (rectangular box)754 * \param *dim vector class755 */756 void molecule::SetBoxDimension(Vector *dim)757 {758 RealSpaceMatrix domain;759 for(int i =0; i<NDIM;++i)760 domain.at(i,i) = dim->at(i);761 World::getInstance().setDomain(domain);762 };763 764 753 /** Removes atom from molecule list, but does not delete it. 765 754 * \param *pointer atom to be removed -
src/molecule.hpp
r8859b5 r7f1b51 273 273 bool CenterInBox(); 274 274 bool BoundInBox(); 275 void CenterEdge( Vector *max);275 void CenterEdge(); 276 276 void CenterOrigin(); 277 277 void CenterPeriodic(); 278 void CenterAtVector( Vector *newcenter);279 void Translate(const Vector *x);280 void TranslatePeriodically(const Vector *trans);281 void Mirror(const Vector *x);282 void Align( Vector *n);283 void Scale(const double * * constfactor);278 void CenterAtVector(const Vector &newcenter); 279 void Translate(const Vector &x); 280 void TranslatePeriodically(const Vector &trans); 281 void Mirror(const Vector &x); 282 void Align(const Vector &n); 283 void Scale(const double *factor); 284 284 void DeterminePeriodicCenter(Vector ¢er, const enum HydrogenTreatment _treatment = ExcludeHydrogen); 285 Vector * DetermineCenterOfGravity() const; 286 Vector * DetermineCenterOfAll() const; 287 Vector * DetermineCenterOfBox() const; 285 const Vector DetermineCenterOfGravity() const; 286 const Vector DetermineCenterOfAll() const; 288 287 void SetNameFromFilename(const char *filename); 289 void SetBoxDimension(Vector *dim);290 288 bool ScanForPeriodicCorrection(); 291 289 double VolumeOfConvexEnvelope(bool IsAngstroem); -
src/molecule_geometry.cpp
r8859b5 r7f1b51 58 58 /************************************* Functions for class molecule *********************************/ 59 59 60 /** Returns vector pointing to center of the domain. 61 * \return pointer to center of the domain 62 */ 63 #ifdef HAVE_INLINE 64 inline 65 #else 66 static 67 #endif 68 const Vector DetermineCenterOfBox() 69 { 70 Vector a(0.5,0.5,0.5); 71 const RealSpaceMatrix &M = World::getInstance().getDomain().getM(); 72 a *= M; 73 return a; 74 } 60 75 61 76 /** Centers the molecule in the box whose lengths are defined by vector \a *BoxLengths. … … 65 80 { 66 81 bool status = true; 67 const Vector *Center = DetermineCenterOfAll();68 const Vector *CenterBox = DetermineCenterOfBox();82 const Vector Center = DetermineCenterOfAll(); 83 const Vector CenterBox = DetermineCenterOfBox(); 69 84 Box &domain = World::getInstance().getDomain(); 70 85 71 86 // go through all atoms 72 for (iterator iter = begin(); iter != end(); ++iter) { 73 if (DoLog(4) && (*Center != *CenterBox)) 74 LOG(4, "INFO: atom before is at " << **iter); 75 **iter -= *Center; 76 **iter += *CenterBox; 77 if (DoLog(4) && (*Center != *CenterBox)) 78 LOG(4, "INFO: atom after is at " << **iter); 79 } 87 Translate(CenterBox - Center); 80 88 getAtomSet().transformNodes(boost::bind(&Box::enforceBoundaryConditions,domain,_1)); 81 89 82 delete(Center);83 delete(CenterBox);84 90 return status; 85 } ;91 } 86 92 87 93 … … 98 104 99 105 return status; 100 } ;106 } 101 107 102 108 /** Centers the edge of the atoms at (0,0,0). 103 * \param *out output stream for debugging 104 * \param *max coordinates of other edge, specifying box dimensions. 105 */ 106 void molecule::CenterEdge(Vector *max) 107 { 108 // Info info(__func__); 109 Vector *min = new Vector; 110 111 const_iterator iter = begin(); // start at first in list 112 if (iter != end()) { //list not empty? 113 for (int i=NDIM;i--;) { 114 max->at(i) = (*iter)->at(i); 115 min->at(i) = (*iter)->at(i); 116 } 117 for (; iter != end(); ++iter) {// continue with second if present 118 //(*iter)->Output(1,1,out); 119 for (int i=NDIM;i--;) { 120 max->at(i) = (max->at(i) < (*iter)->at(i)) ? (*iter)->at(i) : max->at(i); 121 min->at(i) = (min->at(i) > (*iter)->at(i)) ? (*iter)->at(i) : min->at(i); 122 } 123 } 124 LOG(1, "INFO: Maximum is " << *max << ", Minimum is " << *min << "."); 125 min->Scale(-1.); 126 (*max) += (*min); 127 Translate(min); 128 } 129 delete(min); 130 }; 109 */ 110 void molecule::CenterEdge() 111 { 112 const_iterator iter = begin(); 113 if (iter != end()) { //list not empty? 114 Vector min = (*begin())->getPosition(); 115 for (;iter != end(); ++iter) { // continue with second if present 116 const Vector ¤tPos = (*iter)->getPosition(); 117 for (size_t i=0;i<NDIM;++i) 118 if (min[i] > currentPos[i]) 119 min[i] = currentPos[i]; 120 } 121 Translate(-1.*min); 122 } 123 } 131 124 132 125 /** Centers the center of the atoms at (0,0,0). … … 147 140 } 148 141 Center.Scale(-1./(double)Num); // divide through total number (and sign for direction) 149 Translate( &Center);150 } 151 } ;142 Translate(Center); 143 } 144 } 152 145 153 146 /** Returns vector pointing to center of all atoms. 154 147 * \return pointer to center of all vector 155 148 */ 156 Vector *molecule::DetermineCenterOfAll() const149 const Vector molecule::DetermineCenterOfAll() const 157 150 { 158 151 const_iterator iter = begin(); // start at first in list 159 Vector *a = new Vector();152 Vector a; 160 153 double Num = 0; 161 154 162 a ->Zero();155 a.Zero(); 163 156 164 157 if (iter != end()) { //list not empty? 165 158 for (; iter != end(); ++iter) { // continue with second if present 166 159 Num++; 167 (*a)+= (*iter)->getPosition();168 } 169 a ->Scale(1./(double)Num); // divide through total mass (and sign for direction)160 a += (*iter)->getPosition(); 161 } 162 a.Scale(1./(double)Num); // divide through total mass (and sign for direction) 170 163 } 171 164 return a; 172 }; 173 174 /** Returns vector pointing to center of the domain. 175 * \return pointer to center of the domain 176 */ 177 Vector * molecule::DetermineCenterOfBox() const 178 { 179 Vector *a = new Vector(0.5,0.5,0.5); 180 const RealSpaceMatrix &M = World::getInstance().getDomain().getM(); 181 (*a) *= M; 182 return a; 183 }; 165 } 166 184 167 185 168 /** Returns vector pointing to center of gravity. … … 187 170 * \return pointer to center of gravity vector 188 171 */ 189 Vector *molecule::DetermineCenterOfGravity() const172 const Vector molecule::DetermineCenterOfGravity() const 190 173 { 191 174 const_iterator iter = begin(); // start at first in list 192 Vector *a = new Vector();175 Vector a; 193 176 Vector tmp; 194 177 double Num = 0; 195 178 196 a ->Zero();179 a.Zero(); 197 180 198 181 if (iter != end()) { //list not empty? … … 200 183 Num += (*iter)->getType()->getMass(); 201 184 tmp = (*iter)->getType()->getMass() * (*iter)->getPosition(); 202 (*a)+= tmp;203 } 204 a ->Scale(1./Num); // divide through total mass205 } 206 LOG(1, "INFO: Resulting center of gravity: " << *a << ".");185 a += tmp; 186 } 187 a.Scale(1./Num); // divide through total mass 188 } 189 LOG(1, "INFO: Resulting center of gravity: " << a << "."); 207 190 return a; 208 } ;191 } 209 192 210 193 /** Centers the center of gravity of the atoms at (0,0,0). … … 216 199 Vector NewCenter; 217 200 DeterminePeriodicCenter(NewCenter); 218 // go through all atoms 219 for (iterator iter = begin(); iter != end(); ++iter) { 220 **iter -= NewCenter; 221 } 222 }; 201 Translate(-1.*NewCenter); 202 } 223 203 224 204 … … 227 207 * \param *center return vector for translation vector 228 208 */ 229 void molecule::CenterAtVector(Vector *newcenter) 230 { 231 // go through all atoms 232 for (iterator iter = begin(); iter != end(); ++iter) { 233 **iter -= *newcenter; 234 } 235 }; 209 void molecule::CenterAtVector(const Vector &newcenter) 210 { 211 Translate(-1.*newcenter); 212 } 236 213 237 214 /** Calculate the inertia tensor of a the molecule. … … 242 219 { 243 220 RealSpaceMatrix InertiaTensor; 244 Vector *CenterOfGravity = DetermineCenterOfGravity();221 const Vector CenterOfGravity = DetermineCenterOfGravity(); 245 222 246 223 // reset inertia tensor … … 250 227 for (const_iterator iter = begin(); iter != end(); ++iter) { 251 228 Vector x = (*iter)->getPosition(); 252 x -= *CenterOfGravity;229 x -= CenterOfGravity; 253 230 const double mass = (*iter)->getType()->getMass(); 254 231 InertiaTensor.at(0,0) += mass*(x[1]*x[1] + x[2]*x[2]); … … 265 242 LOG(1, "INFO: The inertia tensor of molecule " << getName() << " is:" << InertiaTensor); 266 243 267 delete CenterOfGravity;268 244 return InertiaTensor; 269 245 } … … 276 252 void molecule::RotateToPrincipalAxisSystem(const Vector &Axis) 277 253 { 278 Vector *CenterOfGravity = DetermineCenterOfGravity();254 const Vector CenterOfGravity = DetermineCenterOfGravity(); 279 255 RealSpaceMatrix InertiaTensor = getInertiaTensor(); 280 256 … … 288 264 289 265 // obtain first column, eigenvector to biggest eigenvalue 290 Vector BiggestEigenvector(InertiaTensor.column(Eigenvalues.SmallestComponent()));266 const Vector BiggestEigenvector(InertiaTensor.column(Eigenvalues.SmallestComponent())); 291 267 Vector DesiredAxis(Axis.getNormalized()); 292 268 … … 302 278 // and rotate 303 279 for (iterator iter = begin(); iter != end(); ++iter) { 304 *(*iter) -= *CenterOfGravity;280 *(*iter) -= CenterOfGravity; 305 281 (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), alpha)); 306 *(*iter) += *CenterOfGravity;282 *(*iter) += CenterOfGravity; 307 283 } 308 284 LOG(0, "STATUS: done."); 309 310 delete CenterOfGravity;311 285 } 312 286 … … 319 293 * x=(**factor) * x (as suggested by comment) 320 294 */ 321 void molecule::Scale(const double * * constfactor)295 void molecule::Scale(const double *factor) 322 296 { 323 297 for (iterator iter = begin(); iter != end(); ++iter) { 324 298 for (size_t j=0;j<(*iter)->getTrajectorySize();j++) { 325 299 Vector temp = (*iter)->getPositionAtStep(j); 326 temp.ScaleAll( *factor);300 temp.ScaleAll(factor); 327 301 (*iter)->setPositionAtStep(j,temp); 328 302 } … … 333 307 * \param trans[] translation vector. 334 308 */ 335 void molecule::Translate(const Vector *trans) 336 { 337 for (iterator iter = begin(); iter != end(); ++iter) { 338 for (size_t j=0;j<(*iter)->getTrajectorySize();j++) { 339 (*iter)->setPositionAtStep(j, (*iter)->getPositionAtStep(j) + (*trans)); 340 } 341 } 309 void molecule::Translate(const Vector &trans) 310 { 311 getAtomSet().translate(trans); 342 312 }; 343 313 … … 346 316 * TODO treatment of trajectories missing 347 317 */ 348 void molecule::TranslatePeriodically(const Vector *trans) 349 { 318 void molecule::TranslatePeriodically(const Vector &trans) 319 { 320 Translate(trans); 350 321 Box &domain = World::getInstance().getDomain(); 351 352 // go through all atoms353 for (iterator iter = begin(); iter != end(); ++iter) {354 **iter += *trans;355 }356 322 getAtomSet().transformNodes(boost::bind(&Box::enforceBoundaryConditions,domain,_1)); 357 358 323 }; 359 324 … … 362 327 * \param n[] normal vector of mirror plane. 363 328 */ 364 void molecule::Mirror(const Vector *n) 365 { 366 OBSERVE; 367 Plane p(*n,0); 329 void molecule::Mirror(const Vector &n) 330 { 331 Plane p(n,0); 368 332 getAtomSet().transformNodes(boost::bind(&Plane::mirrorVector,p,_1)); 369 333 }; … … 381 345 Vector Testvector, Translationvector; 382 346 Vector Center; 383 BondGraph *BG = World::getInstance().getBondGraph();347 const BondGraph * const BG = World::getInstance().getBondGraph(); 384 348 385 349 do { … … 432 396 433 397 Center.Scale(1./static_cast<double>(getAtomCount())); 434 CenterAtVector( &Center);398 CenterAtVector(Center); 435 399 }; 436 400 … … 438 402 * \param n[] alignment vector. 439 403 */ 440 void molecule::Align( Vector *n)404 void molecule::Align(const Vector &n) 441 405 { 442 406 double alpha, tmp; 443 407 Vector z_axis; 408 Vector alignment(n); 444 409 z_axis[0] = 0.; 445 410 z_axis[1] = 0.; … … 448 413 // rotate on z-x plane 449 414 LOG(0, "Begin of Aligning all atoms."); 450 alpha = atan(- n->at(0)/n->at(2));415 alpha = atan(-alignment.at(0)/alignment.at(2)); 451 416 LOG(1, "INFO: Z-X-angle: " << alpha << " ... "); 452 417 for (iterator iter = begin(); iter != end(); ++iter) { … … 462 427 } 463 428 // rotate n vector 464 tmp = n->at(0);465 n->at(0) = cos(alpha) * tmp + sin(alpha) * n->at(2);466 n->at(2) = -sin(alpha) * tmp + cos(alpha) * n->at(2);467 LOG(1, "alignment vector after first rotation: " << n);429 tmp = alignment.at(0); 430 alignment.at(0) = cos(alpha) * tmp + sin(alpha) * alignment.at(2); 431 alignment.at(2) = -sin(alpha) * tmp + cos(alpha) * alignment.at(2); 432 LOG(1, "alignment vector after first rotation: " << alignment); 468 433 469 434 // rotate on z-y plane 470 alpha = atan(- n->at(1)/n->at(2));435 alpha = atan(-alignment.at(1)/alignment.at(2)); 471 436 LOG(1, "INFO: Z-Y-angle: " << alpha << " ... "); 472 437 for (iterator iter = begin(); iter != end(); ++iter) { … … 482 447 } 483 448 // rotate n vector (for consistency check) 484 tmp = n->at(1); 485 n->at(1) = cos(alpha) * tmp + sin(alpha) * n->at(2); 486 n->at(2) = -sin(alpha) * tmp + cos(alpha) * n->at(2); 487 488 489 LOG(1, "alignment vector after second rotation: " << n); 449 tmp = alignment.at(1); 450 alignment.at(1) = cos(alpha) * tmp + sin(alpha) * alignment.at(2); 451 alignment.at(2) = -sin(alpha) * tmp + cos(alpha) * alignment.at(2); 452 453 LOG(1, "alignment vector after second rotation: " << alignment); 490 454 LOG(0, "End of Aligning all atoms."); 491 455 }; -
src/moleculelist.cpp
r8859b5 r7f1b51 229 229 } 230 230 // Center and size 231 Vector *Center = (*ListRunner)->DetermineCenterOfAll(); 232 (*out) << "\t" << *Center << "\t" << sqrt(size) << endl; 233 delete(Center); 231 Vector Center = (*ListRunner)->DetermineCenterOfAll(); 232 (*out) << "\t" << Center << "\t" << sqrt(size) << endl; 234 233 } 235 234 } … … 578 577 // if (BoxDimension[k] < 1.) 579 578 // BoxDimension[k] += 1.; 580 // (*ListRunner)->SetBoxDimension(&BoxDimension); // update Box of atoms by boundary 579 // { 580 // RealSpaceMatrix domain; 581 // for(int i =0; i<NDIM;++i) 582 // domain.at(i,i) = BoxDimension[i]; 583 // World::getInstance().setDomain(domain); 584 // } 581 585 // for (int k = 0; k < NDIM; k++) { 582 586 // BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem); -
tests/Python/AllActions/options.dat
r8859b5 r7f1b51 48 48 default-molname "molname" 49 49 deltat "0.01" 50 density "1.0" 50 51 depth-first-search "2." 51 52 dipole-angular-correlation "H2O" … … 215 216 stretch "1. 1. 1." 216 217 stretch-shapes "1. 2. 3." 217 suspend-in-water "1.0"218 218 take-best-of "5" 219 219 tesselation-radius "5." -
tests/regression/Analysis/DipoleCorrelation-DiscreteAngles/testsuite-analysis-dipole-correlation-discrete-angles.at
r8859b5 r7f1b51 22 22 23 23 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Analysis/DipoleCorrelation-DiscreteAngles/pre/water.xyz .], 0) 24 AT_CHECK([../../molecuilder -i waterbox.xyz -o xyz - -change-box "10,0,10,0,0,10" --fill-void water.xyz --distances "3.1,3.1,3.1" --distance-to-boundary"1." --DoRotate 0], 0, [stdout], [stderr])24 AT_CHECK([../../molecuilder -i waterbox.xyz -o xyz -B "10, 0., 10, 0, 0, 10" -l water.xyz --select-molecule-by-order -1 --fill-regular-grid --mesh-size 3 3 3 --mesh-offset "0.,0.,0." --min-distance "1." --DoRotate 0], 0, [stdout], [stderr]) 25 25 AT_CHECK([../../molecuilder -i waterbox.xyz -o xyz -I --select-all-molecules --dipole-correlation --bin-start -0.5 --bin-width 1. --bin-end 359.5 --output-file waterbox_values.dat --bin-output-file waterbox_histogram.dat], 0, [stdout], [stderr]) 26 26 AT_CHECK([file=waterbox_histogram.dat; diff $file ${abs_top_srcdir}/tests/regression/Analysis/DipoleCorrelation-DiscreteAngles/post/waterbox_histogram.dat], 0, [ignore], [ignore]) … … 33 33 34 34 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Analysis/DipoleCorrelation-DiscreteAngles/pre/water.xyz .], 0) 35 AT_CHECK([../../molecuilder -i waterbox-mirrored.xyz -o xyz - -change-box "10,0,10,0,0,10" --fill-void water.xyz --distances "3.1,3.1,3.1" --distance-to-boundary"1." --DoRotate 0], 0, [stdout], [stderr])36 AT_CHECK([../../molecuilder -i waterbox-mirrored.xyz -I -v 3 --create-shape --shape-name "sphere1" --shape-type "sphere" --translation "5.,5.,5. " --stretch "0.2,0.2,0.2" --select-shape-by-name "sphere1" --select-atoms-inside-volume --select-atoms-molecules --rotate-around-self 180 --axis "0,1,0"], 0, [stdout], [stderr])35 AT_CHECK([../../molecuilder -i waterbox-mirrored.xyz -o xyz -B "10, 0., 10, 0, 0, 10" -l water.xyz --select-molecule-by-order -1 --fill-regular-grid --mesh-size 3 3 3 --mesh-offset "0.5,0.5,0.5" --min-distance "1." --DoRotate 0], 0, [stdout], [stderr]) 36 AT_CHECK([../../molecuilder -i waterbox-mirrored.xyz -I -v 3 --create-shape --shape-name "sphere1" --shape-type "sphere" --translation "5.,5.,5.5" --stretch "0.2,0.2,0.2" --select-shape-by-name "sphere1" --select-atoms-inside-volume --select-atoms-molecules --rotate-around-self 180 --axis "0,1,0"], 0, [stdout], [stderr]) 37 37 AT_CHECK([../../molecuilder -i waterbox-mirrored.xyz -o xyz -I --select-all-molecules --dipole-correlation --bin-start -0.5 --bin-width 1. --bin-end 359.5 --output-file waterbox-mirrored_values.dat --bin-output-file waterbox-mirrored_histogram.dat], 0, [stdout], [stderr]) 38 38 AT_CHECK([file=waterbox-mirrored_histogram.dat; diff $file ${abs_top_srcdir}/tests/regression/Analysis/DipoleCorrelation-DiscreteAngles/post/waterbox-mirrored_histogram.dat], 0, [ignore], [ignore]) -
tests/regression/Analysis/DipoleCorrelation-Empty/testsuite-analysis-dipole-correlation-empty.at
r8859b5 r7f1b51 27 27 AT_KEYWORDS([analysis correlation dipole-correlation]) 28 28 AT_CHECK([../../molecuilder -i hydrogen.xyz -o xyz --add-atom 1 --domain-position "0,0,0"], 0, [stdout], [stderr]) 29 AT_CHECK([../../molecuilder -i hydrogenbox.xyz - o xyz --fill-void hydrogen.xyz --distances "3.1,3.1,3.1" --DoRotate 0], 0, [stdout], [stderr])29 AT_CHECK([../../molecuilder -i hydrogenbox.xyz -B "18.6, 0., 18.6, 0, 0, 18.6" -o xyz -l hydrogen.xyz --select-molecule-by-order -1 --fill-regular-grid --mesh-size 6 6 6 --mesh-offset "0.,0.,0." --DoRotate 0], 0, [stdout], [stderr]) 30 30 AT_CHECK([../../molecuilder -i hydrogenbox.xyz -o xyz --select-molecules-by-formula H2O --dipole-correlation --bin-start 0 --bin-width 1. --bin-end 359 --output-file hydrogenbox_values.dat --bin-output-file hydrogenbox_histogram.dat], 0, [stdout], [stderr]) 31 31 AT_CHECK([file=hydrogenbox_histogram.dat; diff $file ${abs_top_srcdir}/tests/regression/Analysis/DipoleCorrelation-Empty/post/hydrogenbox_histogram.dat], 0, [ignore], [ignore]) -
tests/regression/Atoms/Add/testsuite-atoms-add.at
r8859b5 r7f1b51 53 53 AT_SETUP([Atoms - adding outside boundary fails]) 54 54 AT_KEYWORDS([atoms boundary add-atom]) 55 # this does not fail 56 AT_XFAIL_IF([/bin/true]) 55 57 56 AT_CHECK([../../molecuilder -i test2.conf -o mpqc pcp xyz tremolo pdb --set-boundary-conditions "Ignore,Ignore,Ignore"-a 1 --domain-position "0., 0., -1."], 5, [ignore], [ignore])58 AT_CHECK([../../molecuilder -i test2.conf -o mpqc pcp xyz tremolo pdb --set-boundary-conditions Ignore Ignore Ignore -a 1 --domain-position "0., 0., -1."], 5, [ignore], [ignore]) 57 59 58 60 AT_CLEANUP -
tests/regression/Filling/RegularGrid/post/solved_double_sles.data
r8859b5 r7f1b51 115 115 113 H12 SLES 1 8.7336 11.8825 28.784 HAL3 111 0 0 0 0.09 116 116 114 H12 SLES 1 7.0942 11.2524 28.3633 HAL3 111 0 0 0 0.09 117 115 OW TIP3 0 1.4199 1.4199 1. 4199 OW 116 117 0 0 -0.834118 116 HW TIP3 0 2.1789 1.4199 1.9239 HW 115 0 0 0 0.417119 117 HW TIP3 0 2.1789 1.4199 0.9159 HW 115 0 0 0 0.417120 118 OW TIP3 0 1.4199 1.4199 4. 2597 OW 119 120 0 0 -0.834121 119 HW TIP3 0 2.1789 1.4199 4.7637 HW 118 0 0 0 0.417122 120 HW TIP3 0 2.1789 1.4199 3.7557 HW 118 0 0 0 0.417123 121 OW TIP3 0 1.4199 1.4199 7. 0995 OW 122 123 0 0 -0.834124 122 HW TIP3 0 2.1789 1.4199 7.6035 HW 121 0 0 0 0.417125 123 HW TIP3 0 2.1789 1.4199 6.5955 HW 121 0 0 0 0.417126 124 OW TIP3 0 1.4199 1.4199 9.9393 OW 125 126 0 0 -0.834127 125 HW TIP3 0 2.1789 1.4199 10. 4433 HW 124 0 0 0 0.417128 126 HW TIP3 0 2.1789 1.4199 9. 4353 HW 124 0 0 0 0.417129 127 OW TIP3 0 1.4199 1.4199 1 2.7791 OW 128 129 0 0 -0.834130 128 HW TIP3 0 2.1789 1.4199 13. 2831 HW 127 0 0 0 0.417131 129 HW TIP3 0 2.1789 1.4199 12. 2751 HW 127 0 0 0 0.417132 130 OW TIP3 0 1.4199 4.2597 1. 4199 OW 131 132 0 0 -0.834133 131 HW TIP3 0 2.1789 4.2597 1.9239 HW 130 0 0 0 0.417134 132 HW TIP3 0 2.1789 4.2597 0.9159 HW 130 0 0 0 0.417135 133 OW TIP3 0 1.4199 4.2597 4. 2597 OW 134 135 0 0 -0.834136 134 HW TIP3 0 2.1789 4.2597 4.7637 HW 133 0 0 0 0.417137 135 HW TIP3 0 2.1789 4.2597 3.7557 HW 133 0 0 0 0.417138 136 OW TIP3 0 1.4199 4.2597 7. 0995 OW 137 138 0 0 -0.834139 137 HW TIP3 0 2.1789 4.2597 7.6035 HW 136 0 0 0 0.417140 138 HW TIP3 0 2.1789 4.2597 6.5955 HW 136 0 0 0 0.417141 139 OW TIP3 0 1.4199 4.2597 9.9393 OW 140 141 0 0 -0.834142 140 HW TIP3 0 2.1789 4.2597 10. 4433 HW 139 0 0 0 0.417143 141 HW TIP3 0 2.1789 4.2597 9. 4353 HW 139 0 0 0 0.417144 142 OW TIP3 0 1.4199 4.2597 1 2.7791 OW 143 144 0 0 -0.834145 143 HW TIP3 0 2.1789 4.2597 13. 2831 HW 142 0 0 0 0.417146 144 HW TIP3 0 2.1789 4.2597 12. 2751 HW 142 0 0 0 0.417147 145 OW TIP3 0 1.4199 7.0995 1. 4199 OW 146 147 0 0 -0.834148 146 HW TIP3 0 2.1789 7.0995 1.9239 HW 145 0 0 0 0.417149 147 HW TIP3 0 2.1789 7.0995 0.9159 HW 145 0 0 0 0.417150 148 OW TIP3 0 1.4199 7.0995 4. 2597 OW 149 150 0 0 -0.834151 149 HW TIP3 0 2.1789 7.0995 4.7637 HW 148 0 0 0 0.417152 150 HW TIP3 0 2.1789 7.0995 3.7557 HW 148 0 0 0 0.417153 151 OW TIP3 0 1.4199 7.0995 7. 0995 OW 152 153 0 0 -0.834154 152 HW TIP3 0 2.1789 7.0995 7.6035 HW 151 0 0 0 0.417155 153 HW TIP3 0 2.1789 7.0995 6.5955 HW 151 0 0 0 0.417156 154 OW TIP3 0 1.4199 7.0995 9.9393 OW 155 156 0 0 -0.834157 155 HW TIP3 0 2.1789 7.0995 10. 4433 HW 154 0 0 0 0.417158 156 HW TIP3 0 2.1789 7.0995 9. 4353 HW 154 0 0 0 0.417159 157 OW TIP3 0 1.4199 7.0995 1 2.7791 OW 158 159 0 0 -0.834160 158 HW TIP3 0 2.1789 7.0995 13. 2831 HW 157 0 0 0 0.417161 159 HW TIP3 0 2.1789 7.0995 12. 2751 HW 157 0 0 0 0.417162 160 OW TIP3 0 1.4199 9.9393 1. 4199 OW 161 162 0 0 -0.834163 161 HW TIP3 0 2.1789 9.9393 1.9239 HW 160 0 0 0 0.417164 162 HW TIP3 0 2.1789 9.9393 0.9159 HW 160 0 0 0 0.417165 163 OW TIP3 0 1.4199 9.9393 4. 2597 OW 164 165 0 0 -0.834166 164 HW TIP3 0 2.1789 9.9393 4.7637 HW 163 0 0 0 0.417167 165 HW TIP3 0 2.1789 9.9393 3.7557 HW 163 0 0 0 0.417168 166 OW TIP3 0 1.4199 9.9393 7. 0995 OW 167 168 0 0 -0.834169 167 HW TIP3 0 2.1789 9.9393 7.6035 HW 166 0 0 0 0.417170 168 HW TIP3 0 2.1789 9.9393 6.5955 HW 166 0 0 0 0.417171 169 OW TIP3 0 1.4199 9.9393 9.9393 OW 170 171 0 0 -0.834172 170 HW TIP3 0 2.1789 9.9393 10. 4433 HW 169 0 0 0 0.417173 171 HW TIP3 0 2.1789 9.9393 9. 4353 HW 169 0 0 0 0.417174 172 OW TIP3 0 1.4199 9.9393 1 2.7791 OW 173 174 0 0 -0.834175 173 HW TIP3 0 2.1789 9.9393 13. 2831 HW 172 0 0 0 0.417176 174 HW TIP3 0 2.1789 9.9393 12. 2751 HW 172 0 0 0 0.417177 175 OW TIP3 0 1.4199 12.7791 1. 4199 OW 176 177 0 0 -0.834178 176 HW TIP3 0 2.1789 12.7791 1.9239 HW 175 0 0 0 0.417179 177 HW TIP3 0 2.1789 12.7791 0.9159 HW 175 0 0 0 0.417180 178 OW TIP3 0 1.4199 12.7791 4. 2597 OW 179 180 0 0 -0.834181 179 HW TIP3 0 2.1789 12.7791 4.7637 HW 178 0 0 0 0.417182 180 HW TIP3 0 2.1789 12.7791 3.7557 HW 178 0 0 0 0.417183 181 OW TIP3 0 1.4199 12.7791 7. 0995 OW 182 183 0 0 -0.834184 182 HW TIP3 0 2.1789 12.7791 7.6035 HW 181 0 0 0 0.417185 183 HW TIP3 0 2.1789 12.7791 6.5955 HW 181 0 0 0 0.417186 184 OW TIP3 0 1.4199 12.7791 9.9393 OW 185 186 0 0 -0.834187 185 HW TIP3 0 2.1789 12.7791 10. 4433 HW 184 0 0 0 0.417188 186 HW TIP3 0 2.1789 12.7791 9. 4353 HW 184 0 0 0 0.417189 187 OW TIP3 0 1.4199 12.7791 1 2.7791 OW 188 189 0 0 -0.834190 188 HW TIP3 0 2.1789 12.7791 13. 2831 HW 187 0 0 0 0.417191 189 HW TIP3 0 2.1789 12.7791 12. 2751 HW 187 0 0 0 0.417192 190 OW TIP3 0 4.2597 1.4199 1. 4199 OW 191 192 0 0 -0.834193 191 HW TIP3 0 5.0187 1.4199 1.9239 HW 190 0 0 0 0.417194 192 HW TIP3 0 5.0187 1.4199 0.9159 HW 190 0 0 0 0.417195 193 OW TIP3 0 4.2597 1.4199 4. 2597 OW 194 195 0 0 -0.834196 194 HW TIP3 0 5.0187 1.4199 4.7637 HW 193 0 0 0 0.417197 195 HW TIP3 0 5.0187 1.4199 3.7557 HW 193 0 0 0 0.417198 196 OW TIP3 0 4.2597 1.4199 7. 0995 OW 197 198 0 0 -0.834199 197 HW TIP3 0 5.0187 1.4199 7.6035 HW 196 0 0 0 0.417200 198 HW TIP3 0 5.0187 1.4199 6.5955 HW 196 0 0 0 0.417201 199 OW TIP3 0 4.2597 1.4199 9.9393 OW 200 201 0 0 -0.834202 200 HW TIP3 0 5.0187 1.4199 10. 4433 HW 199 0 0 0 0.417203 201 HW TIP3 0 5.0187 1.4199 9. 4353 HW 199 0 0 0 0.417204 202 OW TIP3 0 4.2597 1.4199 1 2.7791 OW 203 204 0 0 -0.834205 203 HW TIP3 0 5.0187 1.4199 13. 2831 HW 202 0 0 0 0.417206 204 HW TIP3 0 5.0187 1.4199 12. 2751 HW 202 0 0 0 0.417207 205 OW TIP3 0 4.2597 4.2597 1. 4199 OW 206 207 0 0 -0.834208 206 HW TIP3 0 5.0187 4.2597 1.9239 HW 205 0 0 0 0.417209 207 HW TIP3 0 5.0187 4.2597 0.9159 HW 205 0 0 0 0.417210 208 OW TIP3 0 4.2597 4.2597 4. 2597 OW 209 210 0 0 -0.834211 209 HW TIP3 0 5.0187 4.2597 4.7637 HW 208 0 0 0 0.417212 210 HW TIP3 0 5.0187 4.2597 3.7557 HW 208 0 0 0 0.417213 211 OW TIP3 0 4.2597 4.2597 7. 0995 OW 212 213 0 0 -0.834214 212 HW TIP3 0 5.0187 4.2597 7.6035 HW 211 0 0 0 0.417215 213 HW TIP3 0 5.0187 4.2597 6.5955 HW 211 0 0 0 0.417216 214 OW TIP3 0 4.2597 4.2597 9.9393 OW 215 216 0 0 -0.834217 215 HW TIP3 0 5.0187 4.2597 10. 4433 HW 214 0 0 0 0.417218 216 HW TIP3 0 5.0187 4.2597 9. 4353 HW 214 0 0 0 0.417219 217 OW TIP3 0 4.2597 4.2597 1 2.7791 OW 218 219 0 0 -0.834220 218 HW TIP3 0 5.0187 4.2597 13. 2831 HW 217 0 0 0 0.417221 219 HW TIP3 0 5.0187 4.2597 12. 2751 HW 217 0 0 0 0.417222 220 OW TIP3 0 4.2597 7.0995 1. 4199 OW 221 222 0 0 -0.834223 221 HW TIP3 0 5.0187 7.0995 1.9239 HW 220 0 0 0 0.417224 222 HW TIP3 0 5.0187 7.0995 0.9159 HW 220 0 0 0 0.417225 223 OW TIP3 0 4.2597 7.0995 4. 2597 OW 224 225 0 0 -0.834226 224 HW TIP3 0 5.0187 7.0995 4.7637 HW 223 0 0 0 0.417227 225 HW TIP3 0 5.0187 7.0995 3.7557 HW 223 0 0 0 0.417228 226 OW TIP3 0 4.2597 7.0995 7. 0995 OW 227 228 0 0 -0.834229 227 HW TIP3 0 5.0187 7.0995 7.6035 HW 226 0 0 0 0.417230 228 HW TIP3 0 5.0187 7.0995 6.5955 HW 226 0 0 0 0.417231 229 OW TIP3 0 4.2597 7.0995 9.9393 OW 230 231 0 0 -0.834232 230 HW TIP3 0 5.0187 7.0995 10. 4433 HW 229 0 0 0 0.417233 231 HW TIP3 0 5.0187 7.0995 9. 4353 HW 229 0 0 0 0.417234 232 OW TIP3 0 4.2597 7.0995 1 2.7791 OW 233 234 0 0 -0.834235 233 HW TIP3 0 5.0187 7.0995 13. 2831 HW 232 0 0 0 0.417236 234 HW TIP3 0 5.0187 7.0995 12. 2751 HW 232 0 0 0 0.417237 235 OW TIP3 0 4.2597 9.9393 1. 4199 OW 236 237 0 0 -0.834238 236 HW TIP3 0 5.0187 9.9393 1.9239 HW 235 0 0 0 0.417239 237 HW TIP3 0 5.0187 9.9393 0.9159 HW 235 0 0 0 0.417240 238 OW TIP3 0 4.2597 9.9393 4. 2597 OW 239 240 0 0 -0.834241 239 HW TIP3 0 5.0187 9.9393 4.7637 HW 238 0 0 0 0.417242 240 HW TIP3 0 5.0187 9.9393 3.7557 HW 238 0 0 0 0.417243 241 OW TIP3 0 4.2597 9.9393 7. 0995 OW 242 243 0 0 -0.834244 242 HW TIP3 0 5.0187 9.9393 7.6035 HW 241 0 0 0 0.417245 243 HW TIP3 0 5.0187 9.9393 6.5955 HW 241 0 0 0 0.417246 244 OW TIP3 0 4.2597 9.9393 9.9393 OW 245 246 0 0 -0.834247 245 HW TIP3 0 5.0187 9.9393 10. 4433 HW 244 0 0 0 0.417248 246 HW TIP3 0 5.0187 9.9393 9. 4353 HW 244 0 0 0 0.417249 247 OW TIP3 0 4.2597 9.9393 1 2.7791 OW 248 249 0 0 -0.834250 248 HW TIP3 0 5.0187 9.9393 13. 2831 HW 247 0 0 0 0.417251 249 HW TIP3 0 5.0187 9.9393 12. 2751 HW 247 0 0 0 0.417252 250 OW TIP3 0 4.2597 12.7791 1. 4199 OW 251 252 0 0 -0.834253 251 HW TIP3 0 5.0187 12.7791 1.9239 HW 250 0 0 0 0.417254 252 HW TIP3 0 5.0187 12.7791 0.9159 HW 250 0 0 0 0.417255 253 OW TIP3 0 4.2597 12.7791 4. 2597 OW 254 255 0 0 -0.834256 254 HW TIP3 0 5.0187 12.7791 4.7637 HW 253 0 0 0 0.417257 255 HW TIP3 0 5.0187 12.7791 3.7557 HW 253 0 0 0 0.417258 256 OW TIP3 0 4.2597 12.7791 7. 0995 OW 257 258 0 0 -0.834259 257 HW TIP3 0 5.0187 12.7791 7.6035 HW 256 0 0 0 0.417260 258 HW TIP3 0 5.0187 12.7791 6.5955 HW 256 0 0 0 0.417261 259 OW TIP3 0 4.2597 12.7791 9.9393 OW 260 261 0 0 -0.834262 260 HW TIP3 0 5.0187 12.7791 10. 4433 HW 259 0 0 0 0.417263 261 HW TIP3 0 5.0187 12.7791 9. 4353 HW 259 0 0 0 0.417264 262 OW TIP3 0 4.2597 12.7791 1 2.7791 OW 263 264 0 0 -0.834265 263 HW TIP3 0 5.0187 12.7791 13. 2831 HW 262 0 0 0 0.417266 264 HW TIP3 0 5.0187 12.7791 12. 2751 HW 262 0 0 0 0.417267 265 OW TIP3 0 7.0995 1.4199 1. 4199 OW 266 267 0 0 -0.834268 266 HW TIP3 0 7.8585 1.4199 1.9239 HW 265 0 0 0 0.417269 267 HW TIP3 0 7.8585 1.4199 0.9159 HW 265 0 0 0 0.417270 268 OW TIP3 0 7.0995 1.4199 4. 2597 OW 269 270 0 0 -0.834271 269 HW TIP3 0 7.8585 1.4199 4.7637 HW 268 0 0 0 0.417272 270 HW TIP3 0 7.8585 1.4199 3.7557 HW 268 0 0 0 0.417273 271 OW TIP3 0 7.0995 1.4199 7. 0995 OW 272 273 0 0 -0.834274 272 HW TIP3 0 7.8585 1.4199 7.6035 HW 271 0 0 0 0.417275 273 HW TIP3 0 7.8585 1.4199 6.5955 HW 271 0 0 0 0.417276 274 OW TIP3 0 7.0995 1.4199 9.9393 OW 275 276 0 0 -0.834277 275 HW TIP3 0 7.8585 1.4199 10. 4433 HW 274 0 0 0 0.417278 276 HW TIP3 0 7.8585 1.4199 9. 4353 HW 274 0 0 0 0.417279 277 OW TIP3 0 7.0995 1.4199 1 2.7791 OW 278 279 0 0 -0.834280 278 HW TIP3 0 7.8585 1.4199 13. 2831 HW 277 0 0 0 0.417281 279 HW TIP3 0 7.8585 1.4199 12. 2751 HW 277 0 0 0 0.417282 280 OW TIP3 0 7.0995 4.2597 1. 4199 OW 281 282 0 0 -0.834283 281 HW TIP3 0 7.8585 4.2597 1.9239 HW 280 0 0 0 0.417284 282 HW TIP3 0 7.8585 4.2597 0.9159 HW 280 0 0 0 0.417285 283 OW TIP3 0 7.0995 4.2597 4. 2597 OW 284 285 0 0 -0.834286 284 HW TIP3 0 7.8585 4.2597 4.7637 HW 283 0 0 0 0.417287 285 HW TIP3 0 7.8585 4.2597 3.7557 HW 283 0 0 0 0.417288 286 OW TIP3 0 7.0995 4.2597 7. 0995 OW 287 288 0 0 -0.834289 287 HW TIP3 0 7.8585 4.2597 7.6035 HW 286 0 0 0 0.417290 288 HW TIP3 0 7.8585 4.2597 6.5955 HW 286 0 0 0 0.417291 289 OW TIP3 0 7.0995 4.2597 9.9393 OW 290 291 0 0 -0.834292 290 HW TIP3 0 7.8585 4.2597 10. 4433 HW 289 0 0 0 0.417293 291 HW TIP3 0 7.8585 4.2597 9. 4353 HW 289 0 0 0 0.417294 292 OW TIP3 0 7.0995 4.2597 1 2.7791 OW 293 294 0 0 -0.834295 293 HW TIP3 0 7.8585 4.2597 13. 2831 HW 292 0 0 0 0.417296 294 HW TIP3 0 7.8585 4.2597 12. 2751 HW 292 0 0 0 0.417297 295 OW TIP3 0 7.0995 7.0995 1. 4199 OW 296 297 0 0 -0.834298 296 HW TIP3 0 7.8585 7.0995 1.9239 HW 295 0 0 0 0.417299 297 HW TIP3 0 7.8585 7.0995 0.9159 HW 295 0 0 0 0.417300 298 OW TIP3 0 7.0995 7.0995 4. 2597 OW 299 300 0 0 -0.834301 299 HW TIP3 0 7.8585 7.0995 4.7637 HW 298 0 0 0 0.417302 300 HW TIP3 0 7.8585 7.0995 3.7557 HW 298 0 0 0 0.417303 301 OW TIP3 0 7.0995 7.0995 7. 0995 OW 302 303 0 0 -0.834304 302 HW TIP3 0 7.8585 7.0995 7.6035 HW 301 0 0 0 0.417305 303 HW TIP3 0 7.8585 7.0995 6.5955 HW 301 0 0 0 0.417306 304 OW TIP3 0 7.0995 7.0995 9.9393 OW 305 306 0 0 -0.834307 305 HW TIP3 0 7.8585 7.0995 10. 4433 HW 304 0 0 0 0.417308 306 HW TIP3 0 7.8585 7.0995 9. 4353 HW 304 0 0 0 0.417309 307 OW TIP3 0 7.0995 9.9393 1. 4199 OW 308 309 0 0 -0.834310 308 HW TIP3 0 7.8585 9.9393 1.9239 HW 307 0 0 0 0.417311 309 HW TIP3 0 7.8585 9.9393 0.9159 HW 307 0 0 0 0.417312 310 OW TIP3 0 7.0995 9.9393 4. 2597 OW 311 312 0 0 -0.834313 311 HW TIP3 0 7.8585 9.9393 4.7637 HW 310 0 0 0 0.417314 312 HW TIP3 0 7.8585 9.9393 3.7557 HW 310 0 0 0 0.417315 313 OW TIP3 0 7.0995 12.7791 1. 4199 OW 314 315 0 0 -0.834316 314 HW TIP3 0 7.8585 12.7791 1.9239 HW 313 0 0 0 0.417317 315 HW TIP3 0 7.8585 12.7791 0.9159 HW 313 0 0 0 0.417318 316 OW TIP3 0 7.0995 12.7791 4. 2597 OW 317 318 0 0 -0.834319 317 HW TIP3 0 7.8585 12.7791 4.7637 HW 316 0 0 0 0.417320 318 HW TIP3 0 7.8585 12.7791 3.7557 HW 316 0 0 0 0.417321 319 OW TIP3 0 9.9393 1.4199 1. 4199 OW 320 321 0 0 -0.834322 320 HW TIP3 0 10.6983 1.4199 1.9239 HW 319 0 0 0 0.417323 321 HW TIP3 0 10.6983 1.4199 0.9159 HW 319 0 0 0 0.417324 322 OW TIP3 0 9.9393 1.4199 4. 2597 OW 323 324 0 0 -0.834325 323 HW TIP3 0 10.6983 1.4199 4.7637 HW 322 0 0 0 0.417326 324 HW TIP3 0 10.6983 1.4199 3.7557 HW 322 0 0 0 0.417327 325 OW TIP3 0 9.9393 1.4199 7. 0995 OW 326 327 0 0 -0.834328 326 HW TIP3 0 10.6983 1.4199 7.6035 HW 325 0 0 0 0.417329 327 HW TIP3 0 10.6983 1.4199 6.5955 HW 325 0 0 0 0.417330 328 OW TIP3 0 9.9393 1.4199 9.9393 OW 329 330 0 0 -0.834331 329 HW TIP3 0 10.6983 1.4199 10. 4433 HW 328 0 0 0 0.417332 330 HW TIP3 0 10.6983 1.4199 9. 4353 HW 328 0 0 0 0.417333 331 OW TIP3 0 9.9393 1.4199 1 2.7791 OW 332 333 0 0 -0.834334 332 HW TIP3 0 10.6983 1.4199 13. 2831 HW 331 0 0 0 0.417335 333 HW TIP3 0 10.6983 1.4199 12. 2751 HW 331 0 0 0 0.417336 334 OW TIP3 0 9.9393 4.2597 1. 4199 OW 335 336 0 0 -0.834337 335 HW TIP3 0 10.6983 4.2597 1.9239 HW 334 0 0 0 0.417338 336 HW TIP3 0 10.6983 4.2597 0.9159 HW 334 0 0 0 0.417339 337 OW TIP3 0 9.9393 4.2597 4. 2597 OW 338 339 0 0 -0.834340 338 HW TIP3 0 10.6983 4.2597 4.7637 HW 337 0 0 0 0.417341 339 HW TIP3 0 10.6983 4.2597 3.7557 HW 337 0 0 0 0.417342 340 OW TIP3 0 9.9393 4.2597 7. 0995 OW 341 342 0 0 -0.834343 341 HW TIP3 0 10.6983 4.2597 7.6035 HW 340 0 0 0 0.417344 342 HW TIP3 0 10.6983 4.2597 6.5955 HW 340 0 0 0 0.417345 343 OW TIP3 0 9.9393 4.2597 9.9393 OW 344 345 0 0 -0.834346 344 HW TIP3 0 10.6983 4.2597 10. 4433 HW 343 0 0 0 0.417347 345 HW TIP3 0 10.6983 4.2597 9. 4353 HW 343 0 0 0 0.417348 346 OW TIP3 0 9.9393 4.2597 1 2.7791 OW 347 348 0 0 -0.834349 347 HW TIP3 0 10.6983 4.2597 13. 2831 HW 346 0 0 0 0.417350 348 HW TIP3 0 10.6983 4.2597 12. 2751 HW 346 0 0 0 0.417351 349 OW TIP3 0 9.9393 7.0995 1. 4199 OW 350 351 0 0 -0.834352 350 HW TIP3 0 10.6983 7.0995 1.9239 HW 349 0 0 0 0.417353 351 HW TIP3 0 10.6983 7.0995 0.9159 HW 349 0 0 0 0.417354 352 OW TIP3 0 9.9393 7.0995 4. 2597 OW 353 354 0 0 -0.834355 353 HW TIP3 0 10.6983 7.0995 4.7637 HW 352 0 0 0 0.417356 354 HW TIP3 0 10.6983 7.0995 3.7557 HW 352 0 0 0 0.417357 355 OW TIP3 0 9.9393 7.0995 7. 0995 OW 356 357 0 0 -0.834358 356 HW TIP3 0 10.6983 7.0995 7.6035 HW 355 0 0 0 0.417359 357 HW TIP3 0 10.6983 7.0995 6.5955 HW 355 0 0 0 0.417360 358 OW TIP3 0 9.9393 7.0995 9.9393 OW 359 360 0 0 -0.834361 359 HW TIP3 0 10.6983 7.0995 10. 4433 HW 358 0 0 0 0.417362 360 HW TIP3 0 10.6983 7.0995 9. 4353 HW 358 0 0 0 0.417363 361 OW TIP3 0 9.9393 7.0995 1 2.7791 OW 362 363 0 0 -0.834364 362 HW TIP3 0 10.6983 7.0995 13. 2831 HW 361 0 0 0 0.417365 363 HW TIP3 0 10.6983 7.0995 12. 2751 HW 361 0 0 0 0.417366 364 OW TIP3 0 9.9393 9.9393 1. 4199 OW 365 366 0 0 -0.834367 365 HW TIP3 0 10.6983 9.9393 1.9239 HW 364 0 0 0 0.417368 366 HW TIP3 0 10.6983 9.9393 0.9159 HW 364 0 0 0 0.417369 367 OW TIP3 0 9.9393 9.9393 4. 2597 OW 368 369 0 0 -0.834370 368 HW TIP3 0 10.6983 9.9393 4.7637 HW 367 0 0 0 0.417371 369 HW TIP3 0 10.6983 9.9393 3.7557 HW 367 0 0 0 0.417372 370 OW TIP3 0 9.9393 9.9393 7. 0995 OW 371 372 0 0 -0.834373 371 HW TIP3 0 10.6983 9.9393 7.6035 HW 370 0 0 0 0.417374 372 HW TIP3 0 10.6983 9.9393 6.5955 HW 370 0 0 0 0.417375 373 OW TIP3 0 9.9393 9.9393 9.9393 OW 374 375 0 0 -0.834376 374 HW TIP3 0 10.6983 9.9393 10. 4433 HW 373 0 0 0 0.417377 375 HW TIP3 0 10.6983 9.9393 9. 4353 HW 373 0 0 0 0.417378 376 OW TIP3 0 9.9393 9.9393 1 2.7791 OW 377 378 0 0 -0.834379 377 HW TIP3 0 10.6983 9.9393 13. 2831 HW 376 0 0 0 0.417380 378 HW TIP3 0 10.6983 9.9393 12. 2751 HW 376 0 0 0 0.417381 379 OW TIP3 0 9.9393 12.7791 1. 4199 OW 380 381 0 0 -0.834382 380 HW TIP3 0 10.6983 12.7791 1.9239 HW 379 0 0 0 0.417383 381 HW TIP3 0 10.6983 12.7791 0.9159 HW 379 0 0 0 0.417384 382 OW TIP3 0 9.9393 12.7791 4. 2597 OW 383 384 0 0 -0.834385 383 HW TIP3 0 10.6983 12.7791 4.7637 HW 382 0 0 0 0.417386 384 HW TIP3 0 10.6983 12.7791 3.7557 HW 382 0 0 0 0.417387 385 OW TIP3 0 9.9393 12.7791 7. 0995 OW 386 387 0 0 -0.834388 386 HW TIP3 0 10.6983 12.7791 7.6035 HW 385 0 0 0 0.417389 387 HW TIP3 0 10.6983 12.7791 6.5955 HW 385 0 0 0 0.417390 388 OW TIP3 0 9.9393 12.7791 9.9393 OW 389 390 0 0 -0.834391 389 HW TIP3 0 10.6983 12.7791 10. 4433 HW 388 0 0 0 0.417392 390 HW TIP3 0 10.6983 12.7791 9. 4353 HW 388 0 0 0 0.417393 391 OW TIP3 0 9.9393 12.7791 1 2.7791 OW 392 393 0 0 -0.834394 392 HW TIP3 0 10.6983 12.7791 13. 2831 HW 391 0 0 0 0.417395 393 HW TIP3 0 10.6983 12.7791 12. 2751 HW 391 0 0 0 0.417396 394 OW TIP3 0 12.7791 1.4199 1. 4199 OW 395 396 0 0 -0.834397 395 HW TIP3 0 13.5381 1.4199 1.9239 HW 394 0 0 0 0.417398 396 HW TIP3 0 13.5381 1.4199 0.9159 HW 394 0 0 0 0.417399 397 OW TIP3 0 12.7791 1.4199 4. 2597 OW 398 399 0 0 -0.834400 398 HW TIP3 0 13.5381 1.4199 4.7637 HW 397 0 0 0 0.417401 399 HW TIP3 0 13.5381 1.4199 3.7557 HW 397 0 0 0 0.417402 400 OW TIP3 0 12.7791 1.4199 7. 0995 OW 401 402 0 0 -0.834403 401 HW TIP3 0 13.5381 1.4199 7.6035 HW 400 0 0 0 0.417404 402 HW TIP3 0 13.5381 1.4199 6.5955 HW 400 0 0 0 0.417405 403 OW TIP3 0 12.7791 1.4199 9.9393 OW 404 405 0 0 -0.834406 404 HW TIP3 0 13.5381 1.4199 10. 4433 HW 403 0 0 0 0.417407 405 HW TIP3 0 13.5381 1.4199 9. 4353 HW 403 0 0 0 0.417408 406 OW TIP3 0 12.7791 1.4199 1 2.7791 OW 407 408 0 0 -0.834409 407 HW TIP3 0 13.5381 1.4199 13. 2831 HW 406 0 0 0 0.417410 408 HW TIP3 0 13.5381 1.4199 12. 2751 HW 406 0 0 0 0.417411 409 OW TIP3 0 12.7791 4.2597 1. 4199 OW 410 411 0 0 -0.834412 410 HW TIP3 0 13.5381 4.2597 1.9239 HW 409 0 0 0 0.417413 411 HW TIP3 0 13.5381 4.2597 0.9159 HW 409 0 0 0 0.417414 412 OW TIP3 0 12.7791 4.2597 4. 2597 OW 413 414 0 0 -0.834415 413 HW TIP3 0 13.5381 4.2597 4.7637 HW 412 0 0 0 0.417416 414 HW TIP3 0 13.5381 4.2597 3.7557 HW 412 0 0 0 0.417417 415 OW TIP3 0 12.7791 4.2597 7. 0995 OW 416 417 0 0 -0.834418 416 HW TIP3 0 13.5381 4.2597 7.6035 HW 415 0 0 0 0.417419 417 HW TIP3 0 13.5381 4.2597 6.5955 HW 415 0 0 0 0.417420 418 OW TIP3 0 12.7791 4.2597 9.9393 OW 419 420 0 0 -0.834421 419 HW TIP3 0 13.5381 4.2597 10. 4433 HW 418 0 0 0 0.417422 420 HW TIP3 0 13.5381 4.2597 9. 4353 HW 418 0 0 0 0.417423 421 OW TIP3 0 12.7791 4.2597 1 2.7791 OW 422 423 0 0 -0.834424 422 HW TIP3 0 13.5381 4.2597 13. 2831 HW 421 0 0 0 0.417425 423 HW TIP3 0 13.5381 4.2597 12. 2751 HW 421 0 0 0 0.417426 424 OW TIP3 0 12.7791 7.0995 1. 4199 OW 425 426 0 0 -0.834427 425 HW TIP3 0 13.5381 7.0995 1.9239 HW 424 0 0 0 0.417428 426 HW TIP3 0 13.5381 7.0995 0.9159 HW 424 0 0 0 0.417429 427 OW TIP3 0 12.7791 7.0995 4. 2597 OW 428 429 0 0 -0.834430 428 HW TIP3 0 13.5381 7.0995 4.7637 HW 427 0 0 0 0.417431 429 HW TIP3 0 13.5381 7.0995 3.7557 HW 427 0 0 0 0.417432 430 OW TIP3 0 12.7791 7.0995 7. 0995 OW 431 432 0 0 -0.834433 431 HW TIP3 0 13.5381 7.0995 7.6035 HW 430 0 0 0 0.417434 432 HW TIP3 0 13.5381 7.0995 6.5955 HW 430 0 0 0 0.417435 433 OW TIP3 0 12.7791 7.0995 9.9393 OW 434 435 0 0 -0.834436 434 HW TIP3 0 13.5381 7.0995 10. 4433 HW 433 0 0 0 0.417437 435 HW TIP3 0 13.5381 7.0995 9. 4353 HW 433 0 0 0 0.417438 436 OW TIP3 0 12.7791 7.0995 1 2.7791 OW 437 438 0 0 -0.834439 437 HW TIP3 0 13.5381 7.0995 13. 2831 HW 436 0 0 0 0.417440 438 HW TIP3 0 13.5381 7.0995 12. 2751 HW 436 0 0 0 0.417441 439 OW TIP3 0 12.7791 9.9393 1. 4199 OW 440 441 0 0 -0.834442 440 HW TIP3 0 13.5381 9.9393 1.9239 HW 439 0 0 0 0.417443 441 HW TIP3 0 13.5381 9.9393 0.9159 HW 439 0 0 0 0.417444 442 OW TIP3 0 12.7791 9.9393 4. 2597 OW 443 444 0 0 -0.834445 443 HW TIP3 0 13.5381 9.9393 4.7637 HW 442 0 0 0 0.417446 444 HW TIP3 0 13.5381 9.9393 3.7557 HW 442 0 0 0 0.417447 445 OW TIP3 0 12.7791 9.9393 7. 0995 OW 446 447 0 0 -0.834448 446 HW TIP3 0 13.5381 9.9393 7.6035 HW 445 0 0 0 0.417449 447 HW TIP3 0 13.5381 9.9393 6.5955 HW 445 0 0 0 0.417450 448 OW TIP3 0 12.7791 9.9393 9.9393 OW 449 450 0 0 -0.834451 449 HW TIP3 0 13.5381 9.9393 10. 4433 HW 448 0 0 0 0.417452 450 HW TIP3 0 13.5381 9.9393 9. 4353 HW 448 0 0 0 0.417453 451 OW TIP3 0 12.7791 9.9393 1 2.7791 OW 452 453 0 0 -0.834454 452 HW TIP3 0 13.5381 9.9393 13. 2831 HW 451 0 0 0 0.417455 453 HW TIP3 0 13.5381 9.9393 12. 2751 HW 451 0 0 0 0.417456 454 OW TIP3 0 12.7791 12.7791 1. 4199 OW 455 456 0 0 -0.834457 455 HW TIP3 0 13.5381 12.7791 1.9239 HW 454 0 0 0 0.417458 456 HW TIP3 0 13.5381 12.7791 0.9159 HW 454 0 0 0 0.417459 457 OW TIP3 0 12.7791 12.7791 4. 2597 OW 458 459 0 0 -0.834460 458 HW TIP3 0 13.5381 12.7791 4.7637 HW 457 0 0 0 0.417461 459 HW TIP3 0 13.5381 12.7791 3.7557 HW 457 0 0 0 0.417462 460 OW TIP3 0 12.7791 12.7791 7. 0995 OW 461 462 0 0 -0.834463 461 HW TIP3 0 13.5381 12.7791 7.6035 HW 460 0 0 0 0.417464 462 HW TIP3 0 13.5381 12.7791 6.5955 HW 460 0 0 0 0.417465 463 OW TIP3 0 12.7791 12.7791 9.9393 OW 464 465 0 0 -0.834466 464 HW TIP3 0 13.5381 12.7791 10. 4433 HW 463 0 0 0 0.417467 465 HW TIP3 0 13.5381 12.7791 9. 4353 HW 463 0 0 0 0.417468 466 OW TIP3 0 12.7791 12.7791 1 2.7791 OW 467 468 0 0 -0.834469 467 HW TIP3 0 13.5381 12.7791 13. 2831 HW 466 0 0 0 0.417470 468 HW TIP3 0 13.5381 12.7791 12. 2751 HW 466 0 0 0 0.417117 115 OW TIP3 0 1.4199 1.4199 1.9239 OW 116 117 0 0 -0.834 118 116 HW TIP3 0 2.1789 1.4199 2.4279 HW 115 0 0 0 0.417 119 117 HW TIP3 0 2.1789 1.4199 1.4199 HW 115 0 0 0 0.417 120 118 OW TIP3 0 1.4199 1.4199 4.7637 OW 119 120 0 0 -0.834 121 119 HW TIP3 0 2.1789 1.4199 5.2677 HW 118 0 0 0 0.417 122 120 HW TIP3 0 2.1789 1.4199 4.2597 HW 118 0 0 0 0.417 123 121 OW TIP3 0 1.4199 1.4199 7.6035 OW 122 123 0 0 -0.834 124 122 HW TIP3 0 2.1789 1.4199 8.1075 HW 121 0 0 0 0.417 125 123 HW TIP3 0 2.1789 1.4199 7.0995 HW 121 0 0 0 0.417 126 124 OW TIP3 0 1.4199 1.4199 10.4433 OW 125 126 0 0 -0.834 127 125 HW TIP3 0 2.1789 1.4199 10.9473 HW 124 0 0 0 0.417 128 126 HW TIP3 0 2.1789 1.4199 9.9393 HW 124 0 0 0 0.417 129 127 OW TIP3 0 1.4199 1.4199 13.2831 OW 128 129 0 0 -0.834 130 128 HW TIP3 0 2.1789 1.4199 13.7871 HW 127 0 0 0 0.417 131 129 HW TIP3 0 2.1789 1.4199 12.7791 HW 127 0 0 0 0.417 132 130 OW TIP3 0 1.4199 4.2597 1.9239 OW 131 132 0 0 -0.834 133 131 HW TIP3 0 2.1789 4.2597 2.4279 HW 130 0 0 0 0.417 134 132 HW TIP3 0 2.1789 4.2597 1.4199 HW 130 0 0 0 0.417 135 133 OW TIP3 0 1.4199 4.2597 4.7637 OW 134 135 0 0 -0.834 136 134 HW TIP3 0 2.1789 4.2597 5.2677 HW 133 0 0 0 0.417 137 135 HW TIP3 0 2.1789 4.2597 4.2597 HW 133 0 0 0 0.417 138 136 OW TIP3 0 1.4199 4.2597 7.6035 OW 137 138 0 0 -0.834 139 137 HW TIP3 0 2.1789 4.2597 8.1075 HW 136 0 0 0 0.417 140 138 HW TIP3 0 2.1789 4.2597 7.0995 HW 136 0 0 0 0.417 141 139 OW TIP3 0 1.4199 4.2597 10.4433 OW 140 141 0 0 -0.834 142 140 HW TIP3 0 2.1789 4.2597 10.9473 HW 139 0 0 0 0.417 143 141 HW TIP3 0 2.1789 4.2597 9.9393 HW 139 0 0 0 0.417 144 142 OW TIP3 0 1.4199 4.2597 13.2831 OW 143 144 0 0 -0.834 145 143 HW TIP3 0 2.1789 4.2597 13.7871 HW 142 0 0 0 0.417 146 144 HW TIP3 0 2.1789 4.2597 12.7791 HW 142 0 0 0 0.417 147 145 OW TIP3 0 1.4199 7.0995 1.9239 OW 146 147 0 0 -0.834 148 146 HW TIP3 0 2.1789 7.0995 2.4279 HW 145 0 0 0 0.417 149 147 HW TIP3 0 2.1789 7.0995 1.4199 HW 145 0 0 0 0.417 150 148 OW TIP3 0 1.4199 7.0995 4.7637 OW 149 150 0 0 -0.834 151 149 HW TIP3 0 2.1789 7.0995 5.2677 HW 148 0 0 0 0.417 152 150 HW TIP3 0 2.1789 7.0995 4.2597 HW 148 0 0 0 0.417 153 151 OW TIP3 0 1.4199 7.0995 7.6035 OW 152 153 0 0 -0.834 154 152 HW TIP3 0 2.1789 7.0995 8.1075 HW 151 0 0 0 0.417 155 153 HW TIP3 0 2.1789 7.0995 7.0995 HW 151 0 0 0 0.417 156 154 OW TIP3 0 1.4199 7.0995 10.4433 OW 155 156 0 0 -0.834 157 155 HW TIP3 0 2.1789 7.0995 10.9473 HW 154 0 0 0 0.417 158 156 HW TIP3 0 2.1789 7.0995 9.9393 HW 154 0 0 0 0.417 159 157 OW TIP3 0 1.4199 7.0995 13.2831 OW 158 159 0 0 -0.834 160 158 HW TIP3 0 2.1789 7.0995 13.7871 HW 157 0 0 0 0.417 161 159 HW TIP3 0 2.1789 7.0995 12.7791 HW 157 0 0 0 0.417 162 160 OW TIP3 0 1.4199 9.9393 1.9239 OW 161 162 0 0 -0.834 163 161 HW TIP3 0 2.1789 9.9393 2.4279 HW 160 0 0 0 0.417 164 162 HW TIP3 0 2.1789 9.9393 1.4199 HW 160 0 0 0 0.417 165 163 OW TIP3 0 1.4199 9.9393 4.7637 OW 164 165 0 0 -0.834 166 164 HW TIP3 0 2.1789 9.9393 5.2677 HW 163 0 0 0 0.417 167 165 HW TIP3 0 2.1789 9.9393 4.2597 HW 163 0 0 0 0.417 168 166 OW TIP3 0 1.4199 9.9393 7.6035 OW 167 168 0 0 -0.834 169 167 HW TIP3 0 2.1789 9.9393 8.1075 HW 166 0 0 0 0.417 170 168 HW TIP3 0 2.1789 9.9393 7.0995 HW 166 0 0 0 0.417 171 169 OW TIP3 0 1.4199 9.9393 10.4433 OW 170 171 0 0 -0.834 172 170 HW TIP3 0 2.1789 9.9393 10.9473 HW 169 0 0 0 0.417 173 171 HW TIP3 0 2.1789 9.9393 9.9393 HW 169 0 0 0 0.417 174 172 OW TIP3 0 1.4199 9.9393 13.2831 OW 173 174 0 0 -0.834 175 173 HW TIP3 0 2.1789 9.9393 13.7871 HW 172 0 0 0 0.417 176 174 HW TIP3 0 2.1789 9.9393 12.7791 HW 172 0 0 0 0.417 177 175 OW TIP3 0 1.4199 12.7791 1.9239 OW 176 177 0 0 -0.834 178 176 HW TIP3 0 2.1789 12.7791 2.4279 HW 175 0 0 0 0.417 179 177 HW TIP3 0 2.1789 12.7791 1.4199 HW 175 0 0 0 0.417 180 178 OW TIP3 0 1.4199 12.7791 4.7637 OW 179 180 0 0 -0.834 181 179 HW TIP3 0 2.1789 12.7791 5.2677 HW 178 0 0 0 0.417 182 180 HW TIP3 0 2.1789 12.7791 4.2597 HW 178 0 0 0 0.417 183 181 OW TIP3 0 1.4199 12.7791 7.6035 OW 182 183 0 0 -0.834 184 182 HW TIP3 0 2.1789 12.7791 8.1075 HW 181 0 0 0 0.417 185 183 HW TIP3 0 2.1789 12.7791 7.0995 HW 181 0 0 0 0.417 186 184 OW TIP3 0 1.4199 12.7791 10.4433 OW 185 186 0 0 -0.834 187 185 HW TIP3 0 2.1789 12.7791 10.9473 HW 184 0 0 0 0.417 188 186 HW TIP3 0 2.1789 12.7791 9.9393 HW 184 0 0 0 0.417 189 187 OW TIP3 0 1.4199 12.7791 13.2831 OW 188 189 0 0 -0.834 190 188 HW TIP3 0 2.1789 12.7791 13.7871 HW 187 0 0 0 0.417 191 189 HW TIP3 0 2.1789 12.7791 12.7791 HW 187 0 0 0 0.417 192 190 OW TIP3 0 4.2597 1.4199 1.9239 OW 191 192 0 0 -0.834 193 191 HW TIP3 0 5.0187 1.4199 2.4279 HW 190 0 0 0 0.417 194 192 HW TIP3 0 5.0187 1.4199 1.4199 HW 190 0 0 0 0.417 195 193 OW TIP3 0 4.2597 1.4199 4.7637 OW 194 195 0 0 -0.834 196 194 HW TIP3 0 5.0187 1.4199 5.2677 HW 193 0 0 0 0.417 197 195 HW TIP3 0 5.0187 1.4199 4.2597 HW 193 0 0 0 0.417 198 196 OW TIP3 0 4.2597 1.4199 7.6035 OW 197 198 0 0 -0.834 199 197 HW TIP3 0 5.0187 1.4199 8.1075 HW 196 0 0 0 0.417 200 198 HW TIP3 0 5.0187 1.4199 7.0995 HW 196 0 0 0 0.417 201 199 OW TIP3 0 4.2597 1.4199 10.4433 OW 200 201 0 0 -0.834 202 200 HW TIP3 0 5.0187 1.4199 10.9473 HW 199 0 0 0 0.417 203 201 HW TIP3 0 5.0187 1.4199 9.9393 HW 199 0 0 0 0.417 204 202 OW TIP3 0 4.2597 1.4199 13.2831 OW 203 204 0 0 -0.834 205 203 HW TIP3 0 5.0187 1.4199 13.7871 HW 202 0 0 0 0.417 206 204 HW TIP3 0 5.0187 1.4199 12.7791 HW 202 0 0 0 0.417 207 205 OW TIP3 0 4.2597 4.2597 1.9239 OW 206 207 0 0 -0.834 208 206 HW TIP3 0 5.0187 4.2597 2.4279 HW 205 0 0 0 0.417 209 207 HW TIP3 0 5.0187 4.2597 1.4199 HW 205 0 0 0 0.417 210 208 OW TIP3 0 4.2597 4.2597 4.7637 OW 209 210 0 0 -0.834 211 209 HW TIP3 0 5.0187 4.2597 5.2677 HW 208 0 0 0 0.417 212 210 HW TIP3 0 5.0187 4.2597 4.2597 HW 208 0 0 0 0.417 213 211 OW TIP3 0 4.2597 4.2597 7.6035 OW 212 213 0 0 -0.834 214 212 HW TIP3 0 5.0187 4.2597 8.1075 HW 211 0 0 0 0.417 215 213 HW TIP3 0 5.0187 4.2597 7.0995 HW 211 0 0 0 0.417 216 214 OW TIP3 0 4.2597 4.2597 10.4433 OW 215 216 0 0 -0.834 217 215 HW TIP3 0 5.0187 4.2597 10.9473 HW 214 0 0 0 0.417 218 216 HW TIP3 0 5.0187 4.2597 9.9393 HW 214 0 0 0 0.417 219 217 OW TIP3 0 4.2597 4.2597 13.2831 OW 218 219 0 0 -0.834 220 218 HW TIP3 0 5.0187 4.2597 13.7871 HW 217 0 0 0 0.417 221 219 HW TIP3 0 5.0187 4.2597 12.7791 HW 217 0 0 0 0.417 222 220 OW TIP3 0 4.2597 7.0995 1.9239 OW 221 222 0 0 -0.834 223 221 HW TIP3 0 5.0187 7.0995 2.4279 HW 220 0 0 0 0.417 224 222 HW TIP3 0 5.0187 7.0995 1.4199 HW 220 0 0 0 0.417 225 223 OW TIP3 0 4.2597 7.0995 4.7637 OW 224 225 0 0 -0.834 226 224 HW TIP3 0 5.0187 7.0995 5.2677 HW 223 0 0 0 0.417 227 225 HW TIP3 0 5.0187 7.0995 4.2597 HW 223 0 0 0 0.417 228 226 OW TIP3 0 4.2597 7.0995 7.6035 OW 227 228 0 0 -0.834 229 227 HW TIP3 0 5.0187 7.0995 8.1075 HW 226 0 0 0 0.417 230 228 HW TIP3 0 5.0187 7.0995 7.0995 HW 226 0 0 0 0.417 231 229 OW TIP3 0 4.2597 7.0995 10.4433 OW 230 231 0 0 -0.834 232 230 HW TIP3 0 5.0187 7.0995 10.9473 HW 229 0 0 0 0.417 233 231 HW TIP3 0 5.0187 7.0995 9.9393 HW 229 0 0 0 0.417 234 232 OW TIP3 0 4.2597 7.0995 13.2831 OW 233 234 0 0 -0.834 235 233 HW TIP3 0 5.0187 7.0995 13.7871 HW 232 0 0 0 0.417 236 234 HW TIP3 0 5.0187 7.0995 12.7791 HW 232 0 0 0 0.417 237 235 OW TIP3 0 4.2597 9.9393 1.9239 OW 236 237 0 0 -0.834 238 236 HW TIP3 0 5.0187 9.9393 2.4279 HW 235 0 0 0 0.417 239 237 HW TIP3 0 5.0187 9.9393 1.4199 HW 235 0 0 0 0.417 240 238 OW TIP3 0 4.2597 9.9393 4.7637 OW 239 240 0 0 -0.834 241 239 HW TIP3 0 5.0187 9.9393 5.2677 HW 238 0 0 0 0.417 242 240 HW TIP3 0 5.0187 9.9393 4.2597 HW 238 0 0 0 0.417 243 241 OW TIP3 0 4.2597 9.9393 7.6035 OW 242 243 0 0 -0.834 244 242 HW TIP3 0 5.0187 9.9393 8.1075 HW 241 0 0 0 0.417 245 243 HW TIP3 0 5.0187 9.9393 7.0995 HW 241 0 0 0 0.417 246 244 OW TIP3 0 4.2597 9.9393 10.4433 OW 245 246 0 0 -0.834 247 245 HW TIP3 0 5.0187 9.9393 10.9473 HW 244 0 0 0 0.417 248 246 HW TIP3 0 5.0187 9.9393 9.9393 HW 244 0 0 0 0.417 249 247 OW TIP3 0 4.2597 9.9393 13.2831 OW 248 249 0 0 -0.834 250 248 HW TIP3 0 5.0187 9.9393 13.7871 HW 247 0 0 0 0.417 251 249 HW TIP3 0 5.0187 9.9393 12.7791 HW 247 0 0 0 0.417 252 250 OW TIP3 0 4.2597 12.7791 1.9239 OW 251 252 0 0 -0.834 253 251 HW TIP3 0 5.0187 12.7791 2.4279 HW 250 0 0 0 0.417 254 252 HW TIP3 0 5.0187 12.7791 1.4199 HW 250 0 0 0 0.417 255 253 OW TIP3 0 4.2597 12.7791 4.7637 OW 254 255 0 0 -0.834 256 254 HW TIP3 0 5.0187 12.7791 5.2677 HW 253 0 0 0 0.417 257 255 HW TIP3 0 5.0187 12.7791 4.2597 HW 253 0 0 0 0.417 258 256 OW TIP3 0 4.2597 12.7791 7.6035 OW 257 258 0 0 -0.834 259 257 HW TIP3 0 5.0187 12.7791 8.1075 HW 256 0 0 0 0.417 260 258 HW TIP3 0 5.0187 12.7791 7.0995 HW 256 0 0 0 0.417 261 259 OW TIP3 0 4.2597 12.7791 10.4433 OW 260 261 0 0 -0.834 262 260 HW TIP3 0 5.0187 12.7791 10.9473 HW 259 0 0 0 0.417 263 261 HW TIP3 0 5.0187 12.7791 9.9393 HW 259 0 0 0 0.417 264 262 OW TIP3 0 4.2597 12.7791 13.2831 OW 263 264 0 0 -0.834 265 263 HW TIP3 0 5.0187 12.7791 13.7871 HW 262 0 0 0 0.417 266 264 HW TIP3 0 5.0187 12.7791 12.7791 HW 262 0 0 0 0.417 267 265 OW TIP3 0 7.0995 1.4199 1.9239 OW 266 267 0 0 -0.834 268 266 HW TIP3 0 7.8585 1.4199 2.4279 HW 265 0 0 0 0.417 269 267 HW TIP3 0 7.8585 1.4199 1.4199 HW 265 0 0 0 0.417 270 268 OW TIP3 0 7.0995 1.4199 4.7637 OW 269 270 0 0 -0.834 271 269 HW TIP3 0 7.8585 1.4199 5.2677 HW 268 0 0 0 0.417 272 270 HW TIP3 0 7.8585 1.4199 4.2597 HW 268 0 0 0 0.417 273 271 OW TIP3 0 7.0995 1.4199 7.6035 OW 272 273 0 0 -0.834 274 272 HW TIP3 0 7.8585 1.4199 8.1075 HW 271 0 0 0 0.417 275 273 HW TIP3 0 7.8585 1.4199 7.0995 HW 271 0 0 0 0.417 276 274 OW TIP3 0 7.0995 1.4199 10.4433 OW 275 276 0 0 -0.834 277 275 HW TIP3 0 7.8585 1.4199 10.9473 HW 274 0 0 0 0.417 278 276 HW TIP3 0 7.8585 1.4199 9.9393 HW 274 0 0 0 0.417 279 277 OW TIP3 0 7.0995 1.4199 13.2831 OW 278 279 0 0 -0.834 280 278 HW TIP3 0 7.8585 1.4199 13.7871 HW 277 0 0 0 0.417 281 279 HW TIP3 0 7.8585 1.4199 12.7791 HW 277 0 0 0 0.417 282 280 OW TIP3 0 7.0995 4.2597 1.9239 OW 281 282 0 0 -0.834 283 281 HW TIP3 0 7.8585 4.2597 2.4279 HW 280 0 0 0 0.417 284 282 HW TIP3 0 7.8585 4.2597 1.4199 HW 280 0 0 0 0.417 285 283 OW TIP3 0 7.0995 4.2597 4.7637 OW 284 285 0 0 -0.834 286 284 HW TIP3 0 7.8585 4.2597 5.2677 HW 283 0 0 0 0.417 287 285 HW TIP3 0 7.8585 4.2597 4.2597 HW 283 0 0 0 0.417 288 286 OW TIP3 0 7.0995 4.2597 7.6035 OW 287 288 0 0 -0.834 289 287 HW TIP3 0 7.8585 4.2597 8.1075 HW 286 0 0 0 0.417 290 288 HW TIP3 0 7.8585 4.2597 7.0995 HW 286 0 0 0 0.417 291 289 OW TIP3 0 7.0995 4.2597 10.4433 OW 290 291 0 0 -0.834 292 290 HW TIP3 0 7.8585 4.2597 10.9473 HW 289 0 0 0 0.417 293 291 HW TIP3 0 7.8585 4.2597 9.9393 HW 289 0 0 0 0.417 294 292 OW TIP3 0 7.0995 4.2597 13.2831 OW 293 294 0 0 -0.834 295 293 HW TIP3 0 7.8585 4.2597 13.7871 HW 292 0 0 0 0.417 296 294 HW TIP3 0 7.8585 4.2597 12.7791 HW 292 0 0 0 0.417 297 295 OW TIP3 0 7.0995 7.0995 1.9239 OW 296 297 0 0 -0.834 298 296 HW TIP3 0 7.8585 7.0995 2.4279 HW 295 0 0 0 0.417 299 297 HW TIP3 0 7.8585 7.0995 1.4199 HW 295 0 0 0 0.417 300 298 OW TIP3 0 7.0995 7.0995 4.7637 OW 299 300 0 0 -0.834 301 299 HW TIP3 0 7.8585 7.0995 5.2677 HW 298 0 0 0 0.417 302 300 HW TIP3 0 7.8585 7.0995 4.2597 HW 298 0 0 0 0.417 303 301 OW TIP3 0 7.0995 7.0995 7.6035 OW 302 303 0 0 -0.834 304 302 HW TIP3 0 7.8585 7.0995 8.1075 HW 301 0 0 0 0.417 305 303 HW TIP3 0 7.8585 7.0995 7.0995 HW 301 0 0 0 0.417 306 304 OW TIP3 0 7.0995 7.0995 10.4433 OW 305 306 0 0 -0.834 307 305 HW TIP3 0 7.8585 7.0995 10.9473 HW 304 0 0 0 0.417 308 306 HW TIP3 0 7.8585 7.0995 9.9393 HW 304 0 0 0 0.417 309 307 OW TIP3 0 7.0995 9.9393 1.9239 OW 308 309 0 0 -0.834 310 308 HW TIP3 0 7.8585 9.9393 2.4279 HW 307 0 0 0 0.417 311 309 HW TIP3 0 7.8585 9.9393 1.4199 HW 307 0 0 0 0.417 312 310 OW TIP3 0 7.0995 9.9393 4.7637 OW 311 312 0 0 -0.834 313 311 HW TIP3 0 7.8585 9.9393 5.2677 HW 310 0 0 0 0.417 314 312 HW TIP3 0 7.8585 9.9393 4.2597 HW 310 0 0 0 0.417 315 313 OW TIP3 0 7.0995 12.7791 1.9239 OW 314 315 0 0 -0.834 316 314 HW TIP3 0 7.8585 12.7791 2.4279 HW 313 0 0 0 0.417 317 315 HW TIP3 0 7.8585 12.7791 1.4199 HW 313 0 0 0 0.417 318 316 OW TIP3 0 7.0995 12.7791 4.7637 OW 317 318 0 0 -0.834 319 317 HW TIP3 0 7.8585 12.7791 5.2677 HW 316 0 0 0 0.417 320 318 HW TIP3 0 7.8585 12.7791 4.2597 HW 316 0 0 0 0.417 321 319 OW TIP3 0 9.9393 1.4199 1.9239 OW 320 321 0 0 -0.834 322 320 HW TIP3 0 10.6983 1.4199 2.4279 HW 319 0 0 0 0.417 323 321 HW TIP3 0 10.6983 1.4199 1.4199 HW 319 0 0 0 0.417 324 322 OW TIP3 0 9.9393 1.4199 4.7637 OW 323 324 0 0 -0.834 325 323 HW TIP3 0 10.6983 1.4199 5.2677 HW 322 0 0 0 0.417 326 324 HW TIP3 0 10.6983 1.4199 4.2597 HW 322 0 0 0 0.417 327 325 OW TIP3 0 9.9393 1.4199 7.6035 OW 326 327 0 0 -0.834 328 326 HW TIP3 0 10.6983 1.4199 8.1075 HW 325 0 0 0 0.417 329 327 HW TIP3 0 10.6983 1.4199 7.0995 HW 325 0 0 0 0.417 330 328 OW TIP3 0 9.9393 1.4199 10.4433 OW 329 330 0 0 -0.834 331 329 HW TIP3 0 10.6983 1.4199 10.9473 HW 328 0 0 0 0.417 332 330 HW TIP3 0 10.6983 1.4199 9.9393 HW 328 0 0 0 0.417 333 331 OW TIP3 0 9.9393 1.4199 13.2831 OW 332 333 0 0 -0.834 334 332 HW TIP3 0 10.6983 1.4199 13.7871 HW 331 0 0 0 0.417 335 333 HW TIP3 0 10.6983 1.4199 12.7791 HW 331 0 0 0 0.417 336 334 OW TIP3 0 9.9393 4.2597 1.9239 OW 335 336 0 0 -0.834 337 335 HW TIP3 0 10.6983 4.2597 2.4279 HW 334 0 0 0 0.417 338 336 HW TIP3 0 10.6983 4.2597 1.4199 HW 334 0 0 0 0.417 339 337 OW TIP3 0 9.9393 4.2597 4.7637 OW 338 339 0 0 -0.834 340 338 HW TIP3 0 10.6983 4.2597 5.2677 HW 337 0 0 0 0.417 341 339 HW TIP3 0 10.6983 4.2597 4.2597 HW 337 0 0 0 0.417 342 340 OW TIP3 0 9.9393 4.2597 7.6035 OW 341 342 0 0 -0.834 343 341 HW TIP3 0 10.6983 4.2597 8.1075 HW 340 0 0 0 0.417 344 342 HW TIP3 0 10.6983 4.2597 7.0995 HW 340 0 0 0 0.417 345 343 OW TIP3 0 9.9393 4.2597 10.4433 OW 344 345 0 0 -0.834 346 344 HW TIP3 0 10.6983 4.2597 10.9473 HW 343 0 0 0 0.417 347 345 HW TIP3 0 10.6983 4.2597 9.9393 HW 343 0 0 0 0.417 348 346 OW TIP3 0 9.9393 4.2597 13.2831 OW 347 348 0 0 -0.834 349 347 HW TIP3 0 10.6983 4.2597 13.7871 HW 346 0 0 0 0.417 350 348 HW TIP3 0 10.6983 4.2597 12.7791 HW 346 0 0 0 0.417 351 349 OW TIP3 0 9.9393 7.0995 1.9239 OW 350 351 0 0 -0.834 352 350 HW TIP3 0 10.6983 7.0995 2.4279 HW 349 0 0 0 0.417 353 351 HW TIP3 0 10.6983 7.0995 1.4199 HW 349 0 0 0 0.417 354 352 OW TIP3 0 9.9393 7.0995 4.7637 OW 353 354 0 0 -0.834 355 353 HW TIP3 0 10.6983 7.0995 5.2677 HW 352 0 0 0 0.417 356 354 HW TIP3 0 10.6983 7.0995 4.2597 HW 352 0 0 0 0.417 357 355 OW TIP3 0 9.9393 7.0995 7.6035 OW 356 357 0 0 -0.834 358 356 HW TIP3 0 10.6983 7.0995 8.1075 HW 355 0 0 0 0.417 359 357 HW TIP3 0 10.6983 7.0995 7.0995 HW 355 0 0 0 0.417 360 358 OW TIP3 0 9.9393 7.0995 10.4433 OW 359 360 0 0 -0.834 361 359 HW TIP3 0 10.6983 7.0995 10.9473 HW 358 0 0 0 0.417 362 360 HW TIP3 0 10.6983 7.0995 9.9393 HW 358 0 0 0 0.417 363 361 OW TIP3 0 9.9393 7.0995 13.2831 OW 362 363 0 0 -0.834 364 362 HW TIP3 0 10.6983 7.0995 13.7871 HW 361 0 0 0 0.417 365 363 HW TIP3 0 10.6983 7.0995 12.7791 HW 361 0 0 0 0.417 366 364 OW TIP3 0 9.9393 9.9393 1.9239 OW 365 366 0 0 -0.834 367 365 HW TIP3 0 10.6983 9.9393 2.4279 HW 364 0 0 0 0.417 368 366 HW TIP3 0 10.6983 9.9393 1.4199 HW 364 0 0 0 0.417 369 367 OW TIP3 0 9.9393 9.9393 4.7637 OW 368 369 0 0 -0.834 370 368 HW TIP3 0 10.6983 9.9393 5.2677 HW 367 0 0 0 0.417 371 369 HW TIP3 0 10.6983 9.9393 4.2597 HW 367 0 0 0 0.417 372 370 OW TIP3 0 9.9393 9.9393 7.6035 OW 371 372 0 0 -0.834 373 371 HW TIP3 0 10.6983 9.9393 8.1075 HW 370 0 0 0 0.417 374 372 HW TIP3 0 10.6983 9.9393 7.0995 HW 370 0 0 0 0.417 375 373 OW TIP3 0 9.9393 9.9393 10.4433 OW 374 375 0 0 -0.834 376 374 HW TIP3 0 10.6983 9.9393 10.9473 HW 373 0 0 0 0.417 377 375 HW TIP3 0 10.6983 9.9393 9.9393 HW 373 0 0 0 0.417 378 376 OW TIP3 0 9.9393 9.9393 13.2831 OW 377 378 0 0 -0.834 379 377 HW TIP3 0 10.6983 9.9393 13.7871 HW 376 0 0 0 0.417 380 378 HW TIP3 0 10.6983 9.9393 12.7791 HW 376 0 0 0 0.417 381 379 OW TIP3 0 9.9393 12.7791 1.9239 OW 380 381 0 0 -0.834 382 380 HW TIP3 0 10.6983 12.7791 2.4279 HW 379 0 0 0 0.417 383 381 HW TIP3 0 10.6983 12.7791 1.4199 HW 379 0 0 0 0.417 384 382 OW TIP3 0 9.9393 12.7791 4.7637 OW 383 384 0 0 -0.834 385 383 HW TIP3 0 10.6983 12.7791 5.2677 HW 382 0 0 0 0.417 386 384 HW TIP3 0 10.6983 12.7791 4.2597 HW 382 0 0 0 0.417 387 385 OW TIP3 0 9.9393 12.7791 7.6035 OW 386 387 0 0 -0.834 388 386 HW TIP3 0 10.6983 12.7791 8.1075 HW 385 0 0 0 0.417 389 387 HW TIP3 0 10.6983 12.7791 7.0995 HW 385 0 0 0 0.417 390 388 OW TIP3 0 9.9393 12.7791 10.4433 OW 389 390 0 0 -0.834 391 389 HW TIP3 0 10.6983 12.7791 10.9473 HW 388 0 0 0 0.417 392 390 HW TIP3 0 10.6983 12.7791 9.9393 HW 388 0 0 0 0.417 393 391 OW TIP3 0 9.9393 12.7791 13.2831 OW 392 393 0 0 -0.834 394 392 HW TIP3 0 10.6983 12.7791 13.7871 HW 391 0 0 0 0.417 395 393 HW TIP3 0 10.6983 12.7791 12.7791 HW 391 0 0 0 0.417 396 394 OW TIP3 0 12.7791 1.4199 1.9239 OW 395 396 0 0 -0.834 397 395 HW TIP3 0 13.5381 1.4199 2.4279 HW 394 0 0 0 0.417 398 396 HW TIP3 0 13.5381 1.4199 1.4199 HW 394 0 0 0 0.417 399 397 OW TIP3 0 12.7791 1.4199 4.7637 OW 398 399 0 0 -0.834 400 398 HW TIP3 0 13.5381 1.4199 5.2677 HW 397 0 0 0 0.417 401 399 HW TIP3 0 13.5381 1.4199 4.2597 HW 397 0 0 0 0.417 402 400 OW TIP3 0 12.7791 1.4199 7.6035 OW 401 402 0 0 -0.834 403 401 HW TIP3 0 13.5381 1.4199 8.1075 HW 400 0 0 0 0.417 404 402 HW TIP3 0 13.5381 1.4199 7.0995 HW 400 0 0 0 0.417 405 403 OW TIP3 0 12.7791 1.4199 10.4433 OW 404 405 0 0 -0.834 406 404 HW TIP3 0 13.5381 1.4199 10.9473 HW 403 0 0 0 0.417 407 405 HW TIP3 0 13.5381 1.4199 9.9393 HW 403 0 0 0 0.417 408 406 OW TIP3 0 12.7791 1.4199 13.2831 OW 407 408 0 0 -0.834 409 407 HW TIP3 0 13.5381 1.4199 13.7871 HW 406 0 0 0 0.417 410 408 HW TIP3 0 13.5381 1.4199 12.7791 HW 406 0 0 0 0.417 411 409 OW TIP3 0 12.7791 4.2597 1.9239 OW 410 411 0 0 -0.834 412 410 HW TIP3 0 13.5381 4.2597 2.4279 HW 409 0 0 0 0.417 413 411 HW TIP3 0 13.5381 4.2597 1.4199 HW 409 0 0 0 0.417 414 412 OW TIP3 0 12.7791 4.2597 4.7637 OW 413 414 0 0 -0.834 415 413 HW TIP3 0 13.5381 4.2597 5.2677 HW 412 0 0 0 0.417 416 414 HW TIP3 0 13.5381 4.2597 4.2597 HW 412 0 0 0 0.417 417 415 OW TIP3 0 12.7791 4.2597 7.6035 OW 416 417 0 0 -0.834 418 416 HW TIP3 0 13.5381 4.2597 8.1075 HW 415 0 0 0 0.417 419 417 HW TIP3 0 13.5381 4.2597 7.0995 HW 415 0 0 0 0.417 420 418 OW TIP3 0 12.7791 4.2597 10.4433 OW 419 420 0 0 -0.834 421 419 HW TIP3 0 13.5381 4.2597 10.9473 HW 418 0 0 0 0.417 422 420 HW TIP3 0 13.5381 4.2597 9.9393 HW 418 0 0 0 0.417 423 421 OW TIP3 0 12.7791 4.2597 13.2831 OW 422 423 0 0 -0.834 424 422 HW TIP3 0 13.5381 4.2597 13.7871 HW 421 0 0 0 0.417 425 423 HW TIP3 0 13.5381 4.2597 12.7791 HW 421 0 0 0 0.417 426 424 OW TIP3 0 12.7791 7.0995 1.9239 OW 425 426 0 0 -0.834 427 425 HW TIP3 0 13.5381 7.0995 2.4279 HW 424 0 0 0 0.417 428 426 HW TIP3 0 13.5381 7.0995 1.4199 HW 424 0 0 0 0.417 429 427 OW TIP3 0 12.7791 7.0995 4.7637 OW 428 429 0 0 -0.834 430 428 HW TIP3 0 13.5381 7.0995 5.2677 HW 427 0 0 0 0.417 431 429 HW TIP3 0 13.5381 7.0995 4.2597 HW 427 0 0 0 0.417 432 430 OW TIP3 0 12.7791 7.0995 7.6035 OW 431 432 0 0 -0.834 433 431 HW TIP3 0 13.5381 7.0995 8.1075 HW 430 0 0 0 0.417 434 432 HW TIP3 0 13.5381 7.0995 7.0995 HW 430 0 0 0 0.417 435 433 OW TIP3 0 12.7791 7.0995 10.4433 OW 434 435 0 0 -0.834 436 434 HW TIP3 0 13.5381 7.0995 10.9473 HW 433 0 0 0 0.417 437 435 HW TIP3 0 13.5381 7.0995 9.9393 HW 433 0 0 0 0.417 438 436 OW TIP3 0 12.7791 7.0995 13.2831 OW 437 438 0 0 -0.834 439 437 HW TIP3 0 13.5381 7.0995 13.7871 HW 436 0 0 0 0.417 440 438 HW TIP3 0 13.5381 7.0995 12.7791 HW 436 0 0 0 0.417 441 439 OW TIP3 0 12.7791 9.9393 1.9239 OW 440 441 0 0 -0.834 442 440 HW TIP3 0 13.5381 9.9393 2.4279 HW 439 0 0 0 0.417 443 441 HW TIP3 0 13.5381 9.9393 1.4199 HW 439 0 0 0 0.417 444 442 OW TIP3 0 12.7791 9.9393 4.7637 OW 443 444 0 0 -0.834 445 443 HW TIP3 0 13.5381 9.9393 5.2677 HW 442 0 0 0 0.417 446 444 HW TIP3 0 13.5381 9.9393 4.2597 HW 442 0 0 0 0.417 447 445 OW TIP3 0 12.7791 9.9393 7.6035 OW 446 447 0 0 -0.834 448 446 HW TIP3 0 13.5381 9.9393 8.1075 HW 445 0 0 0 0.417 449 447 HW TIP3 0 13.5381 9.9393 7.0995 HW 445 0 0 0 0.417 450 448 OW TIP3 0 12.7791 9.9393 10.4433 OW 449 450 0 0 -0.834 451 449 HW TIP3 0 13.5381 9.9393 10.9473 HW 448 0 0 0 0.417 452 450 HW TIP3 0 13.5381 9.9393 9.9393 HW 448 0 0 0 0.417 453 451 OW TIP3 0 12.7791 9.9393 13.2831 OW 452 453 0 0 -0.834 454 452 HW TIP3 0 13.5381 9.9393 13.7871 HW 451 0 0 0 0.417 455 453 HW TIP3 0 13.5381 9.9393 12.7791 HW 451 0 0 0 0.417 456 454 OW TIP3 0 12.7791 12.7791 1.9239 OW 455 456 0 0 -0.834 457 455 HW TIP3 0 13.5381 12.7791 2.4279 HW 454 0 0 0 0.417 458 456 HW TIP3 0 13.5381 12.7791 1.4199 HW 454 0 0 0 0.417 459 457 OW TIP3 0 12.7791 12.7791 4.7637 OW 458 459 0 0 -0.834 460 458 HW TIP3 0 13.5381 12.7791 5.2677 HW 457 0 0 0 0.417 461 459 HW TIP3 0 13.5381 12.7791 4.2597 HW 457 0 0 0 0.417 462 460 OW TIP3 0 12.7791 12.7791 7.6035 OW 461 462 0 0 -0.834 463 461 HW TIP3 0 13.5381 12.7791 8.1075 HW 460 0 0 0 0.417 464 462 HW TIP3 0 13.5381 12.7791 7.0995 HW 460 0 0 0 0.417 465 463 OW TIP3 0 12.7791 12.7791 10.4433 OW 464 465 0 0 -0.834 466 464 HW TIP3 0 13.5381 12.7791 10.9473 HW 463 0 0 0 0.417 467 465 HW TIP3 0 13.5381 12.7791 9.9393 HW 463 0 0 0 0.417 468 466 OW TIP3 0 12.7791 12.7791 13.2831 OW 467 468 0 0 -0.834 469 467 HW TIP3 0 13.5381 12.7791 13.7871 HW 466 0 0 0 0.417 470 468 HW TIP3 0 13.5381 12.7791 12.7791 HW 466 0 0 0 0.417 -
tests/regression/Filling/RegularGrid/post/solved_single_sles.data
r8859b5 r7f1b51 58 58 56 H12 SLES 1 8.7336 6.8825 28.784 HAL3 54 0 0 0 0.09 59 59 57 H12 SLES 1 7.0942 6.2524 28.3633 HAL3 54 0 0 0 0.09 60 58 OW TIP3 0 1.4199 1.66216 1.54163 OW 59 60 0 0 -0.83461 59 HW TIP3 0 2.1789 1.66216 2. 04563 HW 58 0 0 0 0.41762 60 HW TIP3 0 2.1789 1.66216 1. 03763 HW 58 0 0 0 0.41763 61 OW TIP3 0 1.4199 1.66216 4.6249 OW 62 63 0 0 -0.83464 62 HW TIP3 0 2.1789 1.66216 5. 1289 HW 61 0 0 0 0.41765 63 HW TIP3 0 2.1789 1.66216 4. 1209 HW 61 0 0 0 0.41766 64 OW TIP3 0 1.4199 1.66216 7.70816 OW 65 66 0 0 -0.83467 65 HW TIP3 0 2.1789 1.66216 8. 21216 HW 64 0 0 0 0.41768 66 HW TIP3 0 2.1789 1.66216 7. 20416 HW 64 0 0 0 0.41769 67 OW TIP3 0 1.4199 1.66216 1 0.7914 OW 68 69 0 0 -0.83470 68 HW TIP3 0 2.1789 1.66216 11. 2954 HW 67 0 0 0 0.41771 69 HW TIP3 0 2.1789 1.66216 10. 2874 HW 67 0 0 0 0.41772 70 OW TIP3 0 1.4199 1.66216 1 3.8747 OW 71 72 0 0 -0.83473 71 HW TIP3 0 2.1789 1.66216 14. 3787 HW 70 0 0 0 0.41774 72 HW TIP3 0 2.1789 1.66216 13. 3707 HW 70 0 0 0 0.41775 73 OW TIP3 0 1.4199 1.66216 1 6.958OW 74 75 0 0 -0.83476 74 HW TIP3 0 2.1789 1.66216 17. 4619HW 73 0 0 0 0.41777 75 HW TIP3 0 2.1789 1.66216 16. 454HW 73 0 0 0 0.41778 76 OW TIP3 0 1.4199 1.66216 20. 0412 OW 77 78 0 0 -0.83479 77 HW TIP3 0 2.1789 1.66216 2 0.5452 HW 76 0 0 0 0.41780 78 HW TIP3 0 2.1789 1.66216 19.5372 HW 76 0 0 0 0.41781 79 OW TIP3 0 1.4199 1.66216 23. 1245 OW 80 81 0 0 -0.83482 80 HW TIP3 0 2.1789 1.66216 2 3.6285 HW 79 0 0 0 0.41783 81 HW TIP3 0 2.1789 1.66216 2 2.6205 HW 79 0 0 0 0.41784 82 OW TIP3 0 1.4199 1.66216 26. 2077 OW 83 84 0 0 -0.83485 83 HW TIP3 0 2.1789 1.66216 2 6.7117 HW 82 0 0 0 0.41786 84 HW TIP3 0 2.1789 1.66216 2 5.7037 HW 82 0 0 0 0.41787 85 OW TIP3 0 1.4199 1.66216 29. 291OW 86 87 0 0 -0.83488 86 HW TIP3 0 2.1789 1.66216 29.795HW 85 0 0 0 0.41789 87 HW TIP3 0 2.1789 1.66216 2 8.787HW 85 0 0 0 0.41790 88 OW TIP3 0 1.4199 1.66216 32. 3743 OW 89 90 0 0 -0.83491 89 HW TIP3 0 2.1789 1.66216 3 2.8783 HW 88 0 0 0 0.41792 90 HW TIP3 0 2.1789 1.66216 3 1.8703 HW 88 0 0 0 0.41793 91 OW TIP3 0 1.4199 4.98648 1.54163 OW 92 93 0 0 -0.83494 92 HW TIP3 0 2.1789 4.98648 2. 04563 HW 91 0 0 0 0.41795 93 HW TIP3 0 2.1789 4.98648 1. 03763 HW 91 0 0 0 0.41796 94 OW TIP3 0 1.4199 4.98648 4.6249 OW 95 96 0 0 -0.83497 95 HW TIP3 0 2.1789 4.98648 5. 1289 HW 94 0 0 0 0.41798 96 HW TIP3 0 2.1789 4.98648 4. 1209 HW 94 0 0 0 0.41799 97 OW TIP3 0 1.4199 4.98648 7.70816 OW 98 99 0 0 -0.834100 98 HW TIP3 0 2.1789 4.98648 8. 21216 HW 97 0 0 0 0.417101 99 HW TIP3 0 2.1789 4.98648 7. 20416 HW 97 0 0 0 0.417102 100 OW TIP3 0 1.4199 4.98648 1 0.7914 OW 101 102 0 0 -0.834103 101 HW TIP3 0 2.1789 4.98648 11. 2954 HW 100 0 0 0 0.417104 102 HW TIP3 0 2.1789 4.98648 10. 2874 HW 100 0 0 0 0.417105 103 OW TIP3 0 1.4199 4.98648 1 3.8747 OW 104 105 0 0 -0.834106 104 HW TIP3 0 2.1789 4.98648 14. 3787 HW 103 0 0 0 0.417107 105 HW TIP3 0 2.1789 4.98648 13. 3707 HW 103 0 0 0 0.417108 106 OW TIP3 0 1.4199 4.98648 1 6.958OW 107 108 0 0 -0.834109 107 HW TIP3 0 2.1789 4.98648 17. 4619HW 106 0 0 0 0.417110 108 HW TIP3 0 2.1789 4.98648 16. 454HW 106 0 0 0 0.417111 109 OW TIP3 0 1.4199 4.98648 20. 0412 OW 110 111 0 0 -0.834112 110 HW TIP3 0 2.1789 4.98648 2 0.5452 HW 109 0 0 0 0.417113 111 HW TIP3 0 2.1789 4.98648 19.5372 HW 109 0 0 0 0.417114 112 OW TIP3 0 1.4199 4.98648 23. 1245 OW 113 114 0 0 -0.834115 113 HW TIP3 0 2.1789 4.98648 2 3.6285 HW 112 0 0 0 0.417116 114 HW TIP3 0 2.1789 4.98648 2 2.6205 HW 112 0 0 0 0.417117 115 OW TIP3 0 1.4199 4.98648 26. 2077 OW 116 117 0 0 -0.834118 116 HW TIP3 0 2.1789 4.98648 2 6.7117 HW 115 0 0 0 0.417119 117 HW TIP3 0 2.1789 4.98648 2 5.7037 HW 115 0 0 0 0.417120 118 OW TIP3 0 1.4199 4.98648 29. 291OW 119 120 0 0 -0.834121 119 HW TIP3 0 2.1789 4.98648 29.795HW 118 0 0 0 0.417122 120 HW TIP3 0 2.1789 4.98648 2 8.787HW 118 0 0 0 0.417123 121 OW TIP3 0 1.4199 4.98648 32. 3743 OW 122 123 0 0 -0.834124 122 HW TIP3 0 2.1789 4.98648 3 2.8783 HW 121 0 0 0 0.417125 123 HW TIP3 0 2.1789 4.98648 3 1.8703 HW 121 0 0 0 0.417126 124 OW TIP3 0 1.4199 8.3108 1.54163 OW 125 126 0 0 -0.834127 125 HW TIP3 0 2.1789 8.3108 2. 04563 HW 124 0 0 0 0.417128 126 HW TIP3 0 2.1789 8.3108 1. 03763 HW 124 0 0 0 0.417129 127 OW TIP3 0 1.4199 8.3108 4.6249 OW 128 129 0 0 -0.834130 128 HW TIP3 0 2.1789 8.3108 5. 1289 HW 127 0 0 0 0.417131 129 HW TIP3 0 2.1789 8.3108 4. 1209 HW 127 0 0 0 0.417132 130 OW TIP3 0 1.4199 8.3108 7.70816 OW 131 132 0 0 -0.834133 131 HW TIP3 0 2.1789 8.3108 8. 21216 HW 130 0 0 0 0.417134 132 HW TIP3 0 2.1789 8.3108 7. 20416 HW 130 0 0 0 0.417135 133 OW TIP3 0 1.4199 8.3108 1 0.7914 OW 134 135 0 0 -0.834136 134 HW TIP3 0 2.1789 8.3108 11. 2954 HW 133 0 0 0 0.417137 135 HW TIP3 0 2.1789 8.3108 10. 2874 HW 133 0 0 0 0.417138 136 OW TIP3 0 1.4199 8.3108 1 3.8747 OW 137 138 0 0 -0.834139 137 HW TIP3 0 2.1789 8.3108 14. 3787 HW 136 0 0 0 0.417140 138 HW TIP3 0 2.1789 8.3108 13. 3707 HW 136 0 0 0 0.417141 139 OW TIP3 0 1.4199 8.3108 1 6.958OW 140 141 0 0 -0.834142 140 HW TIP3 0 2.1789 8.3108 17. 4619HW 139 0 0 0 0.417143 141 HW TIP3 0 2.1789 8.3108 16. 454HW 139 0 0 0 0.417144 142 OW TIP3 0 1.4199 8.3108 20. 0412 OW 143 144 0 0 -0.834145 143 HW TIP3 0 2.1789 8.3108 2 0.5452 HW 142 0 0 0 0.417146 144 HW TIP3 0 2.1789 8.3108 19.5372 HW 142 0 0 0 0.417147 145 OW TIP3 0 1.4199 8.3108 23. 1245 OW 146 147 0 0 -0.834148 146 HW TIP3 0 2.1789 8.3108 2 3.6285 HW 145 0 0 0 0.417149 147 HW TIP3 0 2.1789 8.3108 2 2.6205 HW 145 0 0 0 0.417150 148 OW TIP3 0 1.4199 8.3108 26. 2077 OW 149 150 0 0 -0.834151 149 HW TIP3 0 2.1789 8.3108 2 6.7117 HW 148 0 0 0 0.417152 150 HW TIP3 0 2.1789 8.3108 2 5.7037 HW 148 0 0 0 0.417153 151 OW TIP3 0 1.4199 8.3108 29. 291OW 152 153 0 0 -0.834154 152 HW TIP3 0 2.1789 8.3108 29.795HW 151 0 0 0 0.417155 153 HW TIP3 0 2.1789 8.3108 2 8.787HW 151 0 0 0 0.417156 154 OW TIP3 0 1.4199 8.3108 32. 3743 OW 155 156 0 0 -0.834157 155 HW TIP3 0 2.1789 8.3108 3 2.8783 HW 154 0 0 0 0.417158 156 HW TIP3 0 2.1789 8.3108 3 1.8703 HW 154 0 0 0 0.417159 157 OW TIP3 0 1.4199 11.6351 1.54163 OW 158 159 0 0 -0.834160 158 HW TIP3 0 2.1789 11.6351 2. 04563 HW 157 0 0 0 0.417161 159 HW TIP3 0 2.1789 11.6351 1. 03763 HW 157 0 0 0 0.417162 160 OW TIP3 0 1.4199 11.6351 4.6249 OW 161 162 0 0 -0.834163 161 HW TIP3 0 2.1789 11.6351 5. 1289 HW 160 0 0 0 0.417164 162 HW TIP3 0 2.1789 11.6351 4. 1209 HW 160 0 0 0 0.417165 163 OW TIP3 0 1.4199 11.6351 7.70816 OW 164 165 0 0 -0.834166 164 HW TIP3 0 2.1789 11.6351 8. 21216 HW 163 0 0 0 0.417167 165 HW TIP3 0 2.1789 11.6351 7. 20416 HW 163 0 0 0 0.417168 166 OW TIP3 0 1.4199 11.6351 1 0.7914 OW 167 168 0 0 -0.834169 167 HW TIP3 0 2.1789 11.6351 11. 2954 HW 166 0 0 0 0.417170 168 HW TIP3 0 2.1789 11.6351 10. 2874 HW 166 0 0 0 0.417171 169 OW TIP3 0 1.4199 11.6351 1 3.8747 OW 170 171 0 0 -0.834172 170 HW TIP3 0 2.1789 11.6351 14. 3787 HW 169 0 0 0 0.417173 171 HW TIP3 0 2.1789 11.6351 13. 3707 HW 169 0 0 0 0.417174 172 OW TIP3 0 1.4199 11.6351 1 6.958OW 173 174 0 0 -0.834175 173 HW TIP3 0 2.1789 11.6351 17. 4619HW 172 0 0 0 0.417176 174 HW TIP3 0 2.1789 11.6351 16. 454HW 172 0 0 0 0.417177 175 OW TIP3 0 1.4199 11.6351 20. 0412 OW 176 177 0 0 -0.834178 176 HW TIP3 0 2.1789 11.6351 2 0.5452 HW 175 0 0 0 0.417179 177 HW TIP3 0 2.1789 11.6351 19.5372 HW 175 0 0 0 0.417180 178 OW TIP3 0 1.4199 11.6351 23. 1245 OW 179 180 0 0 -0.834181 179 HW TIP3 0 2.1789 11.6351 2 3.6285 HW 178 0 0 0 0.417182 180 HW TIP3 0 2.1789 11.6351 2 2.6205 HW 178 0 0 0 0.417183 181 OW TIP3 0 1.4199 11.6351 26. 2077 OW 182 183 0 0 -0.834184 182 HW TIP3 0 2.1789 11.6351 2 6.7117 HW 181 0 0 0 0.417185 183 HW TIP3 0 2.1789 11.6351 2 5.7037 HW 181 0 0 0 0.417186 184 OW TIP3 0 1.4199 11.6351 29. 291OW 185 186 0 0 -0.834187 185 HW TIP3 0 2.1789 11.6351 29.795HW 184 0 0 0 0.417188 186 HW TIP3 0 2.1789 11.6351 2 8.787HW 184 0 0 0 0.417189 187 OW TIP3 0 1.4199 11.6351 32. 3743 OW 188 189 0 0 -0.834190 188 HW TIP3 0 2.1789 11.6351 3 2.8783 HW 187 0 0 0 0.417191 189 HW TIP3 0 2.1789 11.6351 3 1.8703 HW 187 0 0 0 0.417192 190 OW TIP3 0 1.4199 14.9594 1.54163 OW 191 192 0 0 -0.834193 191 HW TIP3 0 2.1789 14.9594 2. 04563 HW 190 0 0 0 0.417194 192 HW TIP3 0 2.1789 14.9594 1. 03763 HW 190 0 0 0 0.417195 193 OW TIP3 0 1.4199 14.9594 4.6249 OW 194 195 0 0 -0.834196 194 HW TIP3 0 2.1789 14.9594 5. 1289 HW 193 0 0 0 0.417197 195 HW TIP3 0 2.1789 14.9594 4. 1209 HW 193 0 0 0 0.417198 196 OW TIP3 0 1.4199 14.9594 7.70816 OW 197 198 0 0 -0.834199 197 HW TIP3 0 2.1789 14.9594 8. 21216 HW 196 0 0 0 0.417200 198 HW TIP3 0 2.1789 14.9594 7. 20416 HW 196 0 0 0 0.417201 199 OW TIP3 0 1.4199 14.9594 1 0.7914 OW 200 201 0 0 -0.834202 200 HW TIP3 0 2.1789 14.9594 11. 2954 HW 199 0 0 0 0.417203 201 HW TIP3 0 2.1789 14.9594 10. 2874 HW 199 0 0 0 0.417204 202 OW TIP3 0 1.4199 14.9594 1 3.8747 OW 203 204 0 0 -0.834205 203 HW TIP3 0 2.1789 14.9594 14. 3787 HW 202 0 0 0 0.417206 204 HW TIP3 0 2.1789 14.9594 13. 3707 HW 202 0 0 0 0.417207 205 OW TIP3 0 1.4199 14.9594 1 6.958OW 206 207 0 0 -0.834208 206 HW TIP3 0 2.1789 14.9594 17. 4619HW 205 0 0 0 0.417209 207 HW TIP3 0 2.1789 14.9594 16. 454HW 205 0 0 0 0.417210 208 OW TIP3 0 1.4199 14.9594 20. 0412 OW 209 210 0 0 -0.834211 209 HW TIP3 0 2.1789 14.9594 2 0.5452 HW 208 0 0 0 0.417212 210 HW TIP3 0 2.1789 14.9594 19.5372 HW 208 0 0 0 0.417213 211 OW TIP3 0 1.4199 14.9594 23. 1245 OW 212 213 0 0 -0.834214 212 HW TIP3 0 2.1789 14.9594 2 3.6285 HW 211 0 0 0 0.417215 213 HW TIP3 0 2.1789 14.9594 2 2.6205 HW 211 0 0 0 0.417216 214 OW TIP3 0 1.4199 14.9594 26. 2077 OW 215 216 0 0 -0.834217 215 HW TIP3 0 2.1789 14.9594 2 6.7117 HW 214 0 0 0 0.417218 216 HW TIP3 0 2.1789 14.9594 2 5.7037 HW 214 0 0 0 0.417219 217 OW TIP3 0 1.4199 14.9594 29. 291OW 218 219 0 0 -0.834220 218 HW TIP3 0 2.1789 14.9594 29.795HW 217 0 0 0 0.417221 219 HW TIP3 0 2.1789 14.9594 2 8.787HW 217 0 0 0 0.417222 220 OW TIP3 0 1.4199 14.9594 32. 3743 OW 221 222 0 0 -0.834223 221 HW TIP3 0 2.1789 14.9594 3 2.8783 HW 220 0 0 0 0.417224 222 HW TIP3 0 2.1789 14.9594 3 1.8703 HW 220 0 0 0 0.417225 223 OW TIP3 0 4.2597 1.66216 1.54163 OW 224 225 0 0 -0.834226 224 HW TIP3 0 5.0187 1.66216 2. 04563 HW 223 0 0 0 0.417227 225 HW TIP3 0 5.0187 1.66216 1. 03763 HW 223 0 0 0 0.417228 226 OW TIP3 0 4.2597 1.66216 4.6249 OW 227 228 0 0 -0.834229 227 HW TIP3 0 5.0187 1.66216 5. 1289 HW 226 0 0 0 0.417230 228 HW TIP3 0 5.0187 1.66216 4. 1209 HW 226 0 0 0 0.417231 229 OW TIP3 0 4.2597 1.66216 7.70816 OW 230 231 0 0 -0.834232 230 HW TIP3 0 5.0187 1.66216 8. 21216 HW 229 0 0 0 0.417233 231 HW TIP3 0 5.0187 1.66216 7. 20416 HW 229 0 0 0 0.417234 232 OW TIP3 0 4.2597 1.66216 1 0.7914 OW 233 234 0 0 -0.834235 233 HW TIP3 0 5.0187 1.66216 11. 2954 HW 232 0 0 0 0.417236 234 HW TIP3 0 5.0187 1.66216 10. 2874 HW 232 0 0 0 0.417237 235 OW TIP3 0 4.2597 1.66216 1 3.8747 OW 236 237 0 0 -0.834238 236 HW TIP3 0 5.0187 1.66216 14. 3787 HW 235 0 0 0 0.417239 237 HW TIP3 0 5.0187 1.66216 13. 3707 HW 235 0 0 0 0.417240 238 OW TIP3 0 4.2597 1.66216 1 6.958OW 239 240 0 0 -0.834241 239 HW TIP3 0 5.0187 1.66216 17. 4619HW 238 0 0 0 0.417242 240 HW TIP3 0 5.0187 1.66216 16. 454HW 238 0 0 0 0.417243 241 OW TIP3 0 4.2597 1.66216 20. 0412 OW 242 243 0 0 -0.834244 242 HW TIP3 0 5.0187 1.66216 2 0.5452 HW 241 0 0 0 0.417245 243 HW TIP3 0 5.0187 1.66216 19.5372 HW 241 0 0 0 0.417246 244 OW TIP3 0 4.2597 1.66216 23. 1245 OW 245 246 0 0 -0.834247 245 HW TIP3 0 5.0187 1.66216 2 3.6285 HW 244 0 0 0 0.417248 246 HW TIP3 0 5.0187 1.66216 2 2.6205 HW 244 0 0 0 0.417249 247 OW TIP3 0 4.2597 1.66216 26. 2077 OW 248 249 0 0 -0.834250 248 HW TIP3 0 5.0187 1.66216 2 6.7117 HW 247 0 0 0 0.417251 249 HW TIP3 0 5.0187 1.66216 2 5.7037 HW 247 0 0 0 0.417252 250 OW TIP3 0 4.2597 1.66216 29. 291OW 251 252 0 0 -0.834253 251 HW TIP3 0 5.0187 1.66216 29.795HW 250 0 0 0 0.417254 252 HW TIP3 0 5.0187 1.66216 2 8.787HW 250 0 0 0 0.417255 253 OW TIP3 0 4.2597 1.66216 32. 3743 OW 254 255 0 0 -0.834256 254 HW TIP3 0 5.0187 1.66216 3 2.8783 HW 253 0 0 0 0.417257 255 HW TIP3 0 5.0187 1.66216 3 1.8703 HW 253 0 0 0 0.417258 256 OW TIP3 0 4.2597 4.98648 1.54163 OW 257 258 0 0 -0.834259 257 HW TIP3 0 5.0187 4.98648 2. 04563 HW 256 0 0 0 0.417260 258 HW TIP3 0 5.0187 4.98648 1. 03763 HW 256 0 0 0 0.417261 259 OW TIP3 0 4.2597 4.98648 4.6249 OW 260 261 0 0 -0.834262 260 HW TIP3 0 5.0187 4.98648 5. 1289 HW 259 0 0 0 0.417263 261 HW TIP3 0 5.0187 4.98648 4. 1209 HW 259 0 0 0 0.417264 262 OW TIP3 0 4.2597 4.98648 7.70816 OW 263 264 0 0 -0.834265 263 HW TIP3 0 5.0187 4.98648 8. 21216 HW 262 0 0 0 0.417266 264 HW TIP3 0 5.0187 4.98648 7. 20416 HW 262 0 0 0 0.417267 265 OW TIP3 0 4.2597 4.98648 1 0.7914 OW 266 267 0 0 -0.834268 266 HW TIP3 0 5.0187 4.98648 11. 2954 HW 265 0 0 0 0.417269 267 HW TIP3 0 5.0187 4.98648 10. 2874 HW 265 0 0 0 0.417270 268 OW TIP3 0 4.2597 4.98648 1 3.8747 OW 269 270 0 0 -0.834271 269 HW TIP3 0 5.0187 4.98648 14. 3787 HW 268 0 0 0 0.417272 270 HW TIP3 0 5.0187 4.98648 13. 3707 HW 268 0 0 0 0.417273 271 OW TIP3 0 4.2597 4.98648 29. 291OW 272 273 0 0 -0.834274 272 HW TIP3 0 5.0187 4.98648 29.795HW 271 0 0 0 0.417275 273 HW TIP3 0 5.0187 4.98648 2 8.787HW 271 0 0 0 0.417276 274 OW TIP3 0 4.2597 4.98648 32. 3743 OW 275 276 0 0 -0.834277 275 HW TIP3 0 5.0187 4.98648 3 2.8783 HW 274 0 0 0 0.417278 276 HW TIP3 0 5.0187 4.98648 3 1.8703 HW 274 0 0 0 0.417279 277 OW TIP3 0 4.2597 8.3108 1.54163 OW 278 279 0 0 -0.834280 278 HW TIP3 0 5.0187 8.3108 2. 04563 HW 277 0 0 0 0.417281 279 HW TIP3 0 5.0187 8.3108 1. 03763 HW 277 0 0 0 0.417282 280 OW TIP3 0 4.2597 8.3108 32. 3743 OW 281 282 0 0 -0.834283 281 HW TIP3 0 5.0187 8.3108 3 2.8783 HW 280 0 0 0 0.417284 282 HW TIP3 0 5.0187 8.3108 3 1.8703 HW 280 0 0 0 0.417285 283 OW TIP3 0 4.2597 11.6351 1.54163 OW 284 285 0 0 -0.834286 284 HW TIP3 0 5.0187 11.6351 2. 04563 HW 283 0 0 0 0.417287 285 HW TIP3 0 5.0187 11.6351 1. 03763 HW 283 0 0 0 0.417288 286 OW TIP3 0 4.2597 11.6351 7.70816 OW 287 288 0 0 -0.834289 287 HW TIP3 0 5.0187 11.6351 8. 21216 HW 286 0 0 0 0.417290 288 HW TIP3 0 5.0187 11.6351 7. 20416 HW 286 0 0 0 0.417291 289 OW TIP3 0 4.2597 11.6351 1 0.7914 OW 290 291 0 0 -0.834292 290 HW TIP3 0 5.0187 11.6351 11. 2954 HW 289 0 0 0 0.417293 291 HW TIP3 0 5.0187 11.6351 10. 2874 HW 289 0 0 0 0.417294 292 OW TIP3 0 4.2597 11.6351 1 3.8747 OW 293 294 0 0 -0.834295 293 HW TIP3 0 5.0187 11.6351 14. 3787 HW 292 0 0 0 0.417296 294 HW TIP3 0 5.0187 11.6351 13. 3707 HW 292 0 0 0 0.417297 295 OW TIP3 0 4.2597 11.6351 1 6.958OW 296 297 0 0 -0.834298 296 HW TIP3 0 5.0187 11.6351 17. 4619HW 295 0 0 0 0.417299 297 HW TIP3 0 5.0187 11.6351 16. 454HW 295 0 0 0 0.417300 298 OW TIP3 0 4.2597 11.6351 20. 0412 OW 299 300 0 0 -0.834301 299 HW TIP3 0 5.0187 11.6351 2 0.5452 HW 298 0 0 0 0.417302 300 HW TIP3 0 5.0187 11.6351 19.5372 HW 298 0 0 0 0.417303 301 OW TIP3 0 4.2597 11.6351 23. 1245 OW 302 303 0 0 -0.834304 302 HW TIP3 0 5.0187 11.6351 2 3.6285 HW 301 0 0 0 0.417305 303 HW TIP3 0 5.0187 11.6351 2 2.6205 HW 301 0 0 0 0.417306 304 OW TIP3 0 4.2597 11.6351 26. 2077 OW 305 306 0 0 -0.834307 305 HW TIP3 0 5.0187 11.6351 2 6.7117 HW 304 0 0 0 0.417308 306 HW TIP3 0 5.0187 11.6351 2 5.7037 HW 304 0 0 0 0.417309 307 OW TIP3 0 4.2597 11.6351 29. 291OW 308 309 0 0 -0.834310 308 HW TIP3 0 5.0187 11.6351 29.795HW 307 0 0 0 0.417311 309 HW TIP3 0 5.0187 11.6351 2 8.787HW 307 0 0 0 0.417312 310 OW TIP3 0 4.2597 11.6351 32. 3743 OW 311 312 0 0 -0.834313 311 HW TIP3 0 5.0187 11.6351 3 2.8783 HW 310 0 0 0 0.417314 312 HW TIP3 0 5.0187 11.6351 3 1.8703 HW 310 0 0 0 0.417315 313 OW TIP3 0 4.2597 14.9594 1.54163 OW 314 315 0 0 -0.834316 314 HW TIP3 0 5.0187 14.9594 2. 04563 HW 313 0 0 0 0.417317 315 HW TIP3 0 5.0187 14.9594 1. 03763 HW 313 0 0 0 0.417318 316 OW TIP3 0 4.2597 14.9594 4.6249 OW 317 318 0 0 -0.834319 317 HW TIP3 0 5.0187 14.9594 5. 1289 HW 316 0 0 0 0.417320 318 HW TIP3 0 5.0187 14.9594 4. 1209 HW 316 0 0 0 0.417321 319 OW TIP3 0 4.2597 14.9594 7.70816 OW 320 321 0 0 -0.834322 320 HW TIP3 0 5.0187 14.9594 8. 21216 HW 319 0 0 0 0.417323 321 HW TIP3 0 5.0187 14.9594 7. 20416 HW 319 0 0 0 0.417324 322 OW TIP3 0 4.2597 14.9594 1 0.7914 OW 323 324 0 0 -0.834325 323 HW TIP3 0 5.0187 14.9594 11. 2954 HW 322 0 0 0 0.417326 324 HW TIP3 0 5.0187 14.9594 10. 2874 HW 322 0 0 0 0.417327 325 OW TIP3 0 4.2597 14.9594 1 3.8747 OW 326 327 0 0 -0.834328 326 HW TIP3 0 5.0187 14.9594 14. 3787 HW 325 0 0 0 0.417329 327 HW TIP3 0 5.0187 14.9594 13. 3707 HW 325 0 0 0 0.417330 328 OW TIP3 0 4.2597 14.9594 1 6.958OW 329 330 0 0 -0.834331 329 HW TIP3 0 5.0187 14.9594 17. 4619HW 328 0 0 0 0.417332 330 HW TIP3 0 5.0187 14.9594 16. 454HW 328 0 0 0 0.417333 331 OW TIP3 0 4.2597 14.9594 20. 0412 OW 332 333 0 0 -0.834334 332 HW TIP3 0 5.0187 14.9594 2 0.5452 HW 331 0 0 0 0.417335 333 HW TIP3 0 5.0187 14.9594 19.5372 HW 331 0 0 0 0.417336 334 OW TIP3 0 4.2597 14.9594 23. 1245 OW 335 336 0 0 -0.834337 335 HW TIP3 0 5.0187 14.9594 2 3.6285 HW 334 0 0 0 0.417338 336 HW TIP3 0 5.0187 14.9594 2 2.6205 HW 334 0 0 0 0.417339 337 OW TIP3 0 4.2597 14.9594 26. 2077 OW 338 339 0 0 -0.834340 338 HW TIP3 0 5.0187 14.9594 2 6.7117 HW 337 0 0 0 0.417341 339 HW TIP3 0 5.0187 14.9594 2 5.7037 HW 337 0 0 0 0.417342 340 OW TIP3 0 4.2597 14.9594 29. 291OW 341 342 0 0 -0.834343 341 HW TIP3 0 5.0187 14.9594 29.795HW 340 0 0 0 0.417344 342 HW TIP3 0 5.0187 14.9594 2 8.787HW 340 0 0 0 0.417345 343 OW TIP3 0 4.2597 14.9594 32. 3743 OW 344 345 0 0 -0.834346 344 HW TIP3 0 5.0187 14.9594 3 2.8783 HW 343 0 0 0 0.417347 345 HW TIP3 0 5.0187 14.9594 3 1.8703 HW 343 0 0 0 0.417348 346 OW TIP3 0 7.0995 1.66216 1.54163 OW 347 348 0 0 -0.834349 347 HW TIP3 0 7.8585 1.66216 2. 04563 HW 346 0 0 0 0.417350 348 HW TIP3 0 7.8585 1.66216 1. 03763 HW 346 0 0 0 0.417351 349 OW TIP3 0 7.0995 1.66216 4.6249 OW 350 351 0 0 -0.834352 350 HW TIP3 0 7.8585 1.66216 5. 1289 HW 349 0 0 0 0.417353 351 HW TIP3 0 7.8585 1.66216 4. 1209 HW 349 0 0 0 0.417354 352 OW TIP3 0 7.0995 1.66216 7.70816 OW 353 354 0 0 -0.834355 353 HW TIP3 0 7.8585 1.66216 8. 21216 HW 352 0 0 0 0.417356 354 HW TIP3 0 7.8585 1.66216 7. 20416 HW 352 0 0 0 0.417357 355 OW TIP3 0 7.0995 1.66216 1 0.7914 OW 356 357 0 0 -0.834358 356 HW TIP3 0 7.8585 1.66216 11. 2954 HW 355 0 0 0 0.417359 357 HW TIP3 0 7.8585 1.66216 10. 2874 HW 355 0 0 0 0.417360 358 OW TIP3 0 7.0995 1.66216 1 3.8747 OW 359 360 0 0 -0.834361 359 HW TIP3 0 7.8585 1.66216 14. 3787 HW 358 0 0 0 0.417362 360 HW TIP3 0 7.8585 1.66216 13. 3707 HW 358 0 0 0 0.417363 361 OW TIP3 0 7.0995 1.66216 1 6.958OW 362 363 0 0 -0.834364 362 HW TIP3 0 7.8585 1.66216 17. 4619HW 361 0 0 0 0.417365 363 HW TIP3 0 7.8585 1.66216 16. 454HW 361 0 0 0 0.417366 364 OW TIP3 0 7.0995 1.66216 20. 0412 OW 365 366 0 0 -0.834367 365 HW TIP3 0 7.8585 1.66216 2 0.5452 HW 364 0 0 0 0.417368 366 HW TIP3 0 7.8585 1.66216 19.5372 HW 364 0 0 0 0.417369 367 OW TIP3 0 7.0995 1.66216 23. 1245 OW 368 369 0 0 -0.834370 368 HW TIP3 0 7.8585 1.66216 2 3.6285 HW 367 0 0 0 0.417371 369 HW TIP3 0 7.8585 1.66216 2 2.6205 HW 367 0 0 0 0.417372 370 OW TIP3 0 7.0995 1.66216 26. 2077 OW 371 372 0 0 -0.834373 371 HW TIP3 0 7.8585 1.66216 2 6.7117 HW 370 0 0 0 0.417374 372 HW TIP3 0 7.8585 1.66216 2 5.7037 HW 370 0 0 0 0.417375 373 OW TIP3 0 7.0995 1.66216 29. 291OW 374 375 0 0 -0.834376 374 HW TIP3 0 7.8585 1.66216 29.795HW 373 0 0 0 0.417377 375 HW TIP3 0 7.8585 1.66216 2 8.787HW 373 0 0 0 0.417378 376 OW TIP3 0 7.0995 1.66216 32. 3743 OW 377 378 0 0 -0.834379 377 HW TIP3 0 7.8585 1.66216 3 2.8783 HW 376 0 0 0 0.417380 378 HW TIP3 0 7.8585 1.66216 3 1.8703 HW 376 0 0 0 0.417381 379 OW TIP3 0 7.0995 4.98648 1.54163 OW 380 381 0 0 -0.834382 380 HW TIP3 0 7.8585 4.98648 2. 04563 HW 379 0 0 0 0.417383 381 HW TIP3 0 7.8585 4.98648 1. 03763 HW 379 0 0 0 0.417384 382 OW TIP3 0 7.0995 4.98648 4.6249 OW 383 384 0 0 -0.834385 383 HW TIP3 0 7.8585 4.98648 5. 1289 HW 382 0 0 0 0.417386 384 HW TIP3 0 7.8585 4.98648 4. 1209 HW 382 0 0 0 0.417387 385 OW TIP3 0 7.0995 4.98648 1 0.7914 OW 386 387 0 0 -0.834388 386 HW TIP3 0 7.8585 4.98648 11. 2954 HW 385 0 0 0 0.417389 387 HW TIP3 0 7.8585 4.98648 10. 2874 HW 385 0 0 0 0.417390 388 OW TIP3 0 7.0995 4.98648 32. 3743 OW 389 390 0 0 -0.834391 389 HW TIP3 0 7.8585 4.98648 3 2.8783 HW 388 0 0 0 0.417392 390 HW TIP3 0 7.8585 4.98648 3 1.8703 HW 388 0 0 0 0.417393 391 OW TIP3 0 7.0995 8.3108 1.54163 OW 392 393 0 0 -0.834394 392 HW TIP3 0 7.8585 8.3108 2. 04563 HW 391 0 0 0 0.417395 393 HW TIP3 0 7.8585 8.3108 1. 03763 HW 391 0 0 0 0.417396 394 OW TIP3 0 7.0995 8.3108 32. 3743 OW 395 396 0 0 -0.834397 395 HW TIP3 0 7.8585 8.3108 3 2.8783 HW 394 0 0 0 0.417398 396 HW TIP3 0 7.8585 8.3108 3 1.8703 HW 394 0 0 0 0.417399 397 OW TIP3 0 7.0995 11.6351 1.54163 OW 398 399 0 0 -0.834400 398 HW TIP3 0 7.8585 11.6351 2. 04563 HW 397 0 0 0 0.417401 399 HW TIP3 0 7.8585 11.6351 1. 03763 HW 397 0 0 0 0.417402 400 OW TIP3 0 7.0995 11.6351 20. 0412 OW 401 402 0 0 -0.834403 401 HW TIP3 0 7.8585 11.6351 2 0.5452 HW 400 0 0 0 0.417404 402 HW TIP3 0 7.8585 11.6351 19.5372 HW 400 0 0 0 0.417405 403 OW TIP3 0 7.0995 11.6351 23. 1245 OW 404 405 0 0 -0.834406 404 HW TIP3 0 7.8585 11.6351 2 3.6285 HW 403 0 0 0 0.417407 405 HW TIP3 0 7.8585 11.6351 2 2.6205 HW 403 0 0 0 0.417408 406 OW TIP3 0 7.0995 11.6351 29. 291OW 407 408 0 0 -0.834409 407 HW TIP3 0 7.8585 11.6351 29.795HW 406 0 0 0 0.417410 408 HW TIP3 0 7.8585 11.6351 2 8.787HW 406 0 0 0 0.417411 409 OW TIP3 0 7.0995 11.6351 32. 3743 OW 410 411 0 0 -0.834412 410 HW TIP3 0 7.8585 11.6351 3 2.8783 HW 409 0 0 0 0.417413 411 HW TIP3 0 7.8585 11.6351 3 1.8703 HW 409 0 0 0 0.417414 412 OW TIP3 0 7.0995 14.9594 1.54163 OW 413 414 0 0 -0.834415 413 HW TIP3 0 7.8585 14.9594 2. 04563 HW 412 0 0 0 0.417416 414 HW TIP3 0 7.8585 14.9594 1. 03763 HW 412 0 0 0 0.417417 415 OW TIP3 0 7.0995 14.9594 4.6249 OW 416 417 0 0 -0.834418 416 HW TIP3 0 7.8585 14.9594 5. 1289 HW 415 0 0 0 0.417419 417 HW TIP3 0 7.8585 14.9594 4. 1209 HW 415 0 0 0 0.417420 418 OW TIP3 0 7.0995 14.9594 7.70816 OW 419 420 0 0 -0.834421 419 HW TIP3 0 7.8585 14.9594 8. 21216 HW 418 0 0 0 0.417422 420 HW TIP3 0 7.8585 14.9594 7. 20416 HW 418 0 0 0 0.417423 421 OW TIP3 0 7.0995 14.9594 1 0.7914 OW 422 423 0 0 -0.834424 422 HW TIP3 0 7.8585 14.9594 11. 2954 HW 421 0 0 0 0.417425 423 HW TIP3 0 7.8585 14.9594 10. 2874 HW 421 0 0 0 0.417426 424 OW TIP3 0 7.0995 14.9594 1 3.8747 OW 425 426 0 0 -0.834427 425 HW TIP3 0 7.8585 14.9594 14. 3787 HW 424 0 0 0 0.417428 426 HW TIP3 0 7.8585 14.9594 13. 3707 HW 424 0 0 0 0.417429 427 OW TIP3 0 7.0995 14.9594 1 6.958OW 428 429 0 0 -0.834430 428 HW TIP3 0 7.8585 14.9594 17. 4619HW 427 0 0 0 0.417431 429 HW TIP3 0 7.8585 14.9594 16. 454HW 427 0 0 0 0.417432 430 OW TIP3 0 7.0995 14.9594 20. 0412 OW 431 432 0 0 -0.834433 431 HW TIP3 0 7.8585 14.9594 2 0.5452 HW 430 0 0 0 0.417434 432 HW TIP3 0 7.8585 14.9594 19.5372 HW 430 0 0 0 0.417435 433 OW TIP3 0 7.0995 14.9594 23. 1245 OW 434 435 0 0 -0.834436 434 HW TIP3 0 7.8585 14.9594 2 3.6285 HW 433 0 0 0 0.417437 435 HW TIP3 0 7.8585 14.9594 2 2.6205 HW 433 0 0 0 0.417438 436 OW TIP3 0 7.0995 14.9594 26. 2077 OW 437 438 0 0 -0.834439 437 HW TIP3 0 7.8585 14.9594 2 6.7117 HW 436 0 0 0 0.417440 438 HW TIP3 0 7.8585 14.9594 2 5.7037 HW 436 0 0 0 0.417441 439 OW TIP3 0 7.0995 14.9594 29. 291OW 440 441 0 0 -0.834442 440 HW TIP3 0 7.8585 14.9594 29.795HW 439 0 0 0 0.417443 441 HW TIP3 0 7.8585 14.9594 2 8.787HW 439 0 0 0 0.417444 442 OW TIP3 0 7.0995 14.9594 32. 3743 OW 443 444 0 0 -0.834445 443 HW TIP3 0 7.8585 14.9594 3 2.8783 HW 442 0 0 0 0.417446 444 HW TIP3 0 7.8585 14.9594 3 1.8703 HW 442 0 0 0 0.417447 445 OW TIP3 0 9.9393 1.66216 1.54163 OW 446 447 0 0 -0.834448 446 HW TIP3 0 10.6983 1.66216 2. 04563 HW 445 0 0 0 0.417449 447 HW TIP3 0 10.6983 1.66216 1. 03763 HW 445 0 0 0 0.417450 448 OW TIP3 0 9.9393 1.66216 4.6249 OW 449 450 0 0 -0.834451 449 HW TIP3 0 10.6983 1.66216 5. 1289 HW 448 0 0 0 0.417452 450 HW TIP3 0 10.6983 1.66216 4. 1209 HW 448 0 0 0 0.417453 451 OW TIP3 0 9.9393 1.66216 7.70816 OW 452 453 0 0 -0.834454 452 HW TIP3 0 10.6983 1.66216 8. 21216 HW 451 0 0 0 0.417455 453 HW TIP3 0 10.6983 1.66216 7. 20416 HW 451 0 0 0 0.417456 454 OW TIP3 0 9.9393 1.66216 1 0.7914 OW 455 456 0 0 -0.834457 455 HW TIP3 0 10.6983 1.66216 11. 2954 HW 454 0 0 0 0.417458 456 HW TIP3 0 10.6983 1.66216 10. 2874 HW 454 0 0 0 0.417459 457 OW TIP3 0 9.9393 1.66216 1 3.8747 OW 458 459 0 0 -0.834460 458 HW TIP3 0 10.6983 1.66216 14. 3787 HW 457 0 0 0 0.417461 459 HW TIP3 0 10.6983 1.66216 13. 3707 HW 457 0 0 0 0.417462 460 OW TIP3 0 9.9393 1.66216 1 6.958OW 461 462 0 0 -0.834463 461 HW TIP3 0 10.6983 1.66216 17. 4619HW 460 0 0 0 0.417464 462 HW TIP3 0 10.6983 1.66216 16. 454HW 460 0 0 0 0.417465 463 OW TIP3 0 9.9393 1.66216 20. 0412 OW 464 465 0 0 -0.834466 464 HW TIP3 0 10.6983 1.66216 2 0.5452 HW 463 0 0 0 0.417467 465 HW TIP3 0 10.6983 1.66216 19.5372 HW 463 0 0 0 0.417468 466 OW TIP3 0 9.9393 1.66216 23. 1245 OW 467 468 0 0 -0.834469 467 HW TIP3 0 10.6983 1.66216 2 3.6285 HW 466 0 0 0 0.417470 468 HW TIP3 0 10.6983 1.66216 2 2.6205 HW 466 0 0 0 0.417471 469 OW TIP3 0 9.9393 1.66216 26. 2077 OW 470 471 0 0 -0.834472 470 HW TIP3 0 10.6983 1.66216 2 6.7117 HW 469 0 0 0 0.417473 471 HW TIP3 0 10.6983 1.66216 2 5.7037 HW 469 0 0 0 0.417474 472 OW TIP3 0 9.9393 1.66216 29. 291OW 473 474 0 0 -0.834475 473 HW TIP3 0 10.6983 1.66216 29.795HW 472 0 0 0 0.417476 474 HW TIP3 0 10.6983 1.66216 2 8.787HW 472 0 0 0 0.417477 475 OW TIP3 0 9.9393 1.66216 32. 3743 OW 476 477 0 0 -0.834478 476 HW TIP3 0 10.6983 1.66216 3 2.8783 HW 475 0 0 0 0.417479 477 HW TIP3 0 10.6983 1.66216 3 1.8703 HW 475 0 0 0 0.417480 478 OW TIP3 0 9.9393 4.98648 1.54163 OW 479 480 0 0 -0.834481 479 HW TIP3 0 10.6983 4.98648 2. 04563 HW 478 0 0 0 0.417482 480 HW TIP3 0 10.6983 4.98648 1. 03763 HW 478 0 0 0 0.417483 481 OW TIP3 0 9.9393 4.98648 4.6249 OW 482 483 0 0 -0.834484 482 HW TIP3 0 10.6983 4.98648 5. 1289 HW 481 0 0 0 0.417485 483 HW TIP3 0 10.6983 4.98648 4. 1209 HW 481 0 0 0 0.417486 484 OW TIP3 0 9.9393 4.98648 7.70816 OW 485 486 0 0 -0.834487 485 HW TIP3 0 10.6983 4.98648 8. 21216 HW 484 0 0 0 0.417488 486 HW TIP3 0 10.6983 4.98648 7. 20416 HW 484 0 0 0 0.417489 487 OW TIP3 0 9.9393 4.98648 1 0.7914 OW 488 489 0 0 -0.834490 488 HW TIP3 0 10.6983 4.98648 11. 2954 HW 487 0 0 0 0.417491 489 HW TIP3 0 10.6983 4.98648 10. 2874 HW 487 0 0 0 0.417492 490 OW TIP3 0 9.9393 4.98648 1 6.958OW 491 492 0 0 -0.834493 491 HW TIP3 0 10.6983 4.98648 17. 4619HW 490 0 0 0 0.417494 492 HW TIP3 0 10.6983 4.98648 16. 454HW 490 0 0 0 0.417495 493 OW TIP3 0 9.9393 4.98648 32. 3743 OW 494 495 0 0 -0.834496 494 HW TIP3 0 10.6983 4.98648 3 2.8783 HW 493 0 0 0 0.417497 495 HW TIP3 0 10.6983 4.98648 3 1.8703 HW 493 0 0 0 0.417498 496 OW TIP3 0 9.9393 8.3108 1.54163 OW 497 498 0 0 -0.834499 497 HW TIP3 0 10.6983 8.3108 2. 04563 HW 496 0 0 0 0.417500 498 HW TIP3 0 10.6983 8.3108 1. 03763 HW 496 0 0 0 0.417501 499 OW TIP3 0 9.9393 8.3108 32. 3743 OW 500 501 0 0 -0.834502 500 HW TIP3 0 10.6983 8.3108 3 2.8783 HW 499 0 0 0 0.417503 501 HW TIP3 0 10.6983 8.3108 3 1.8703 HW 499 0 0 0 0.417504 502 OW TIP3 0 9.9393 11.6351 1.54163 OW 503 504 0 0 -0.834505 503 HW TIP3 0 10.6983 11.6351 2. 04563 HW 502 0 0 0 0.417506 504 HW TIP3 0 10.6983 11.6351 1. 03763 HW 502 0 0 0 0.417507 505 OW TIP3 0 9.9393 11.6351 1 3.8747 OW 506 507 0 0 -0.834508 506 HW TIP3 0 10.6983 11.6351 14. 3787 HW 505 0 0 0 0.417509 507 HW TIP3 0 10.6983 11.6351 13. 3707 HW 505 0 0 0 0.417510 508 OW TIP3 0 9.9393 11.6351 1 6.958OW 509 510 0 0 -0.834511 509 HW TIP3 0 10.6983 11.6351 17. 4619HW 508 0 0 0 0.417512 510 HW TIP3 0 10.6983 11.6351 16. 454HW 508 0 0 0 0.417513 511 OW TIP3 0 9.9393 11.6351 20. 0412 OW 512 513 0 0 -0.834514 512 HW TIP3 0 10.6983 11.6351 2 0.5452 HW 511 0 0 0 0.417515 513 HW TIP3 0 10.6983 11.6351 19.5372 HW 511 0 0 0 0.417516 514 OW TIP3 0 9.9393 11.6351 23. 1245 OW 515 516 0 0 -0.834517 515 HW TIP3 0 10.6983 11.6351 2 3.6285 HW 514 0 0 0 0.417518 516 HW TIP3 0 10.6983 11.6351 2 2.6205 HW 514 0 0 0 0.417519 517 OW TIP3 0 9.9393 11.6351 26. 2077 OW 518 519 0 0 -0.834520 518 HW TIP3 0 10.6983 11.6351 2 6.7117 HW 517 0 0 0 0.417521 519 HW TIP3 0 10.6983 11.6351 2 5.7037 HW 517 0 0 0 0.417522 520 OW TIP3 0 9.9393 11.6351 29. 291OW 521 522 0 0 -0.834523 521 HW TIP3 0 10.6983 11.6351 29.795HW 520 0 0 0 0.417524 522 HW TIP3 0 10.6983 11.6351 2 8.787HW 520 0 0 0 0.417525 523 OW TIP3 0 9.9393 11.6351 32. 3743 OW 524 525 0 0 -0.834526 524 HW TIP3 0 10.6983 11.6351 3 2.8783 HW 523 0 0 0 0.417527 525 HW TIP3 0 10.6983 11.6351 3 1.8703 HW 523 0 0 0 0.417528 526 OW TIP3 0 9.9393 14.9594 1.54163 OW 527 528 0 0 -0.834529 527 HW TIP3 0 10.6983 14.9594 2. 04563 HW 526 0 0 0 0.417530 528 HW TIP3 0 10.6983 14.9594 1. 03763 HW 526 0 0 0 0.417531 529 OW TIP3 0 9.9393 14.9594 4.6249 OW 530 531 0 0 -0.834532 530 HW TIP3 0 10.6983 14.9594 5. 1289 HW 529 0 0 0 0.417533 531 HW TIP3 0 10.6983 14.9594 4. 1209 HW 529 0 0 0 0.417534 532 OW TIP3 0 9.9393 14.9594 7.70816 OW 533 534 0 0 -0.834535 533 HW TIP3 0 10.6983 14.9594 8. 21216 HW 532 0 0 0 0.417536 534 HW TIP3 0 10.6983 14.9594 7. 20416 HW 532 0 0 0 0.417537 535 OW TIP3 0 9.9393 14.9594 1 0.7914 OW 536 537 0 0 -0.834538 536 HW TIP3 0 10.6983 14.9594 11. 2954 HW 535 0 0 0 0.417539 537 HW TIP3 0 10.6983 14.9594 10. 2874 HW 535 0 0 0 0.417540 538 OW TIP3 0 9.9393 14.9594 1 3.8747 OW 539 540 0 0 -0.834541 539 HW TIP3 0 10.6983 14.9594 14. 3787 HW 538 0 0 0 0.417542 540 HW TIP3 0 10.6983 14.9594 13. 3707 HW 538 0 0 0 0.417543 541 OW TIP3 0 9.9393 14.9594 1 6.958OW 542 543 0 0 -0.834544 542 HW TIP3 0 10.6983 14.9594 17. 4619HW 541 0 0 0 0.417545 543 HW TIP3 0 10.6983 14.9594 16. 454HW 541 0 0 0 0.417546 544 OW TIP3 0 9.9393 14.9594 20. 0412 OW 545 546 0 0 -0.834547 545 HW TIP3 0 10.6983 14.9594 2 0.5452 HW 544 0 0 0 0.417548 546 HW TIP3 0 10.6983 14.9594 19.5372 HW 544 0 0 0 0.417549 547 OW TIP3 0 9.9393 14.9594 23. 1245 OW 548 549 0 0 -0.834550 548 HW TIP3 0 10.6983 14.9594 2 3.6285 HW 547 0 0 0 0.417551 549 HW TIP3 0 10.6983 14.9594 2 2.6205 HW 547 0 0 0 0.417552 550 OW TIP3 0 9.9393 14.9594 26. 2077 OW 551 552 0 0 -0.834553 551 HW TIP3 0 10.6983 14.9594 2 6.7117 HW 550 0 0 0 0.417554 552 HW TIP3 0 10.6983 14.9594 2 5.7037 HW 550 0 0 0 0.417555 553 OW TIP3 0 9.9393 14.9594 29. 291OW 554 555 0 0 -0.834556 554 HW TIP3 0 10.6983 14.9594 29.795HW 553 0 0 0 0.417557 555 HW TIP3 0 10.6983 14.9594 2 8.787HW 553 0 0 0 0.417558 556 OW TIP3 0 9.9393 14.9594 32. 3743 OW 557 558 0 0 -0.834559 557 HW TIP3 0 10.6983 14.9594 3 2.8783 HW 556 0 0 0 0.417560 558 HW TIP3 0 10.6983 14.9594 3 1.8703 HW 556 0 0 0 0.417561 559 OW TIP3 0 12.7791 1.66216 1.54163 OW 560 561 0 0 -0.834562 560 HW TIP3 0 13.5381 1.66216 2. 04563 HW 559 0 0 0 0.417563 561 HW TIP3 0 13.5381 1.66216 1. 03763 HW 559 0 0 0 0.417564 562 OW TIP3 0 12.7791 1.66216 4.6249 OW 563 564 0 0 -0.834565 563 HW TIP3 0 13.5381 1.66216 5. 1289 HW 562 0 0 0 0.417566 564 HW TIP3 0 13.5381 1.66216 4. 1209 HW 562 0 0 0 0.417567 565 OW TIP3 0 12.7791 1.66216 7.70816 OW 566 567 0 0 -0.834568 566 HW TIP3 0 13.5381 1.66216 8. 21216 HW 565 0 0 0 0.417569 567 HW TIP3 0 13.5381 1.66216 7. 20416 HW 565 0 0 0 0.417570 568 OW TIP3 0 12.7791 1.66216 1 0.7914 OW 569 570 0 0 -0.834571 569 HW TIP3 0 13.5381 1.66216 11. 2954 HW 568 0 0 0 0.417572 570 HW TIP3 0 13.5381 1.66216 10. 2874 HW 568 0 0 0 0.417573 571 OW TIP3 0 12.7791 1.66216 1 3.8747 OW 572 573 0 0 -0.834574 572 HW TIP3 0 13.5381 1.66216 14. 3787 HW 571 0 0 0 0.417575 573 HW TIP3 0 13.5381 1.66216 13. 3707 HW 571 0 0 0 0.417576 574 OW TIP3 0 12.7791 1.66216 1 6.958OW 575 576 0 0 -0.834577 575 HW TIP3 0 13.5381 1.66216 17. 4619HW 574 0 0 0 0.417578 576 HW TIP3 0 13.5381 1.66216 16. 454HW 574 0 0 0 0.417579 577 OW TIP3 0 12.7791 1.66216 20. 0412 OW 578 579 0 0 -0.834580 578 HW TIP3 0 13.5381 1.66216 2 0.5452 HW 577 0 0 0 0.417581 579 HW TIP3 0 13.5381 1.66216 19.5372 HW 577 0 0 0 0.417582 580 OW TIP3 0 12.7791 1.66216 23. 1245 OW 581 582 0 0 -0.834583 581 HW TIP3 0 13.5381 1.66216 2 3.6285 HW 580 0 0 0 0.417584 582 HW TIP3 0 13.5381 1.66216 2 2.6205 HW 580 0 0 0 0.417585 583 OW TIP3 0 12.7791 1.66216 26. 2077 OW 584 585 0 0 -0.834586 584 HW TIP3 0 13.5381 1.66216 2 6.7117 HW 583 0 0 0 0.417587 585 HW TIP3 0 13.5381 1.66216 2 5.7037 HW 583 0 0 0 0.417588 586 OW TIP3 0 12.7791 1.66216 29. 291OW 587 588 0 0 -0.834589 587 HW TIP3 0 13.5381 1.66216 29.795HW 586 0 0 0 0.417590 588 HW TIP3 0 13.5381 1.66216 2 8.787HW 586 0 0 0 0.417591 589 OW TIP3 0 12.7791 1.66216 32. 3743 OW 590 591 0 0 -0.834592 590 HW TIP3 0 13.5381 1.66216 3 2.8783 HW 589 0 0 0 0.417593 591 HW TIP3 0 13.5381 1.66216 3 1.8703 HW 589 0 0 0 0.417594 592 OW TIP3 0 12.7791 4.98648 1.54163 OW 593 594 0 0 -0.834595 593 HW TIP3 0 13.5381 4.98648 2. 04563 HW 592 0 0 0 0.417596 594 HW TIP3 0 13.5381 4.98648 1. 03763 HW 592 0 0 0 0.417597 595 OW TIP3 0 12.7791 4.98648 4.6249 OW 596 597 0 0 -0.834598 596 HW TIP3 0 13.5381 4.98648 5. 1289 HW 595 0 0 0 0.417599 597 HW TIP3 0 13.5381 4.98648 4. 1209 HW 595 0 0 0 0.417600 598 OW TIP3 0 12.7791 4.98648 7.70816 OW 599 600 0 0 -0.834601 599 HW TIP3 0 13.5381 4.98648 8. 21216 HW 598 0 0 0 0.417602 600 HW TIP3 0 13.5381 4.98648 7. 20416 HW 598 0 0 0 0.417603 601 OW TIP3 0 12.7791 4.98648 1 0.7914 OW 602 603 0 0 -0.834604 602 HW TIP3 0 13.5381 4.98648 11. 2954 HW 601 0 0 0 0.417605 603 HW TIP3 0 13.5381 4.98648 10. 2874 HW 601 0 0 0 0.417606 604 OW TIP3 0 12.7791 4.98648 1 3.8747 OW 605 606 0 0 -0.834607 605 HW TIP3 0 13.5381 4.98648 14. 3787 HW 604 0 0 0 0.417608 606 HW TIP3 0 13.5381 4.98648 13. 3707 HW 604 0 0 0 0.417609 607 OW TIP3 0 12.7791 4.98648 1 6.958OW 608 609 0 0 -0.834610 608 HW TIP3 0 13.5381 4.98648 17. 4619HW 607 0 0 0 0.417611 609 HW TIP3 0 13.5381 4.98648 16. 454HW 607 0 0 0 0.417612 610 OW TIP3 0 12.7791 4.98648 20. 0412 OW 611 612 0 0 -0.834613 611 HW TIP3 0 13.5381 4.98648 2 0.5452 HW 610 0 0 0 0.417614 612 HW TIP3 0 13.5381 4.98648 19.5372 HW 610 0 0 0 0.417615 613 OW TIP3 0 12.7791 4.98648 23. 1245 OW 614 615 0 0 -0.834616 614 HW TIP3 0 13.5381 4.98648 2 3.6285 HW 613 0 0 0 0.417617 615 HW TIP3 0 13.5381 4.98648 2 2.6205 HW 613 0 0 0 0.417618 616 OW TIP3 0 12.7791 4.98648 26. 2077 OW 617 618 0 0 -0.834619 617 HW TIP3 0 13.5381 4.98648 2 6.7117 HW 616 0 0 0 0.417620 618 HW TIP3 0 13.5381 4.98648 2 5.7037 HW 616 0 0 0 0.417621 619 OW TIP3 0 12.7791 4.98648 29. 291OW 620 621 0 0 -0.834622 620 HW TIP3 0 13.5381 4.98648 29.795HW 619 0 0 0 0.417623 621 HW TIP3 0 13.5381 4.98648 2 8.787HW 619 0 0 0 0.417624 622 OW TIP3 0 12.7791 4.98648 32. 3743 OW 623 624 0 0 -0.834625 623 HW TIP3 0 13.5381 4.98648 3 2.8783 HW 622 0 0 0 0.417626 624 HW TIP3 0 13.5381 4.98648 3 1.8703 HW 622 0 0 0 0.417627 625 OW TIP3 0 12.7791 8.3108 1.54163 OW 626 627 0 0 -0.834628 626 HW TIP3 0 13.5381 8.3108 2. 04563 HW 625 0 0 0 0.417629 627 HW TIP3 0 13.5381 8.3108 1. 03763 HW 625 0 0 0 0.417630 628 OW TIP3 0 12.7791 8.3108 4.6249 OW 629 630 0 0 -0.834631 629 HW TIP3 0 13.5381 8.3108 5. 1289 HW 628 0 0 0 0.417632 630 HW TIP3 0 13.5381 8.3108 4. 1209 HW 628 0 0 0 0.417633 631 OW TIP3 0 12.7791 8.3108 7.70816 OW 632 633 0 0 -0.834634 632 HW TIP3 0 13.5381 8.3108 8. 21216 HW 631 0 0 0 0.417635 633 HW TIP3 0 13.5381 8.3108 7. 20416 HW 631 0 0 0 0.417636 634 OW TIP3 0 12.7791 8.3108 1 0.7914 OW 635 636 0 0 -0.834637 635 HW TIP3 0 13.5381 8.3108 11. 2954 HW 634 0 0 0 0.417638 636 HW TIP3 0 13.5381 8.3108 10. 2874 HW 634 0 0 0 0.417639 637 OW TIP3 0 12.7791 8.3108 1 3.8747 OW 638 639 0 0 -0.834640 638 HW TIP3 0 13.5381 8.3108 14. 3787 HW 637 0 0 0 0.417641 639 HW TIP3 0 13.5381 8.3108 13. 3707 HW 637 0 0 0 0.417642 640 OW TIP3 0 12.7791 8.3108 1 6.958OW 641 642 0 0 -0.834643 641 HW TIP3 0 13.5381 8.3108 17. 4619HW 640 0 0 0 0.417644 642 HW TIP3 0 13.5381 8.3108 16. 454HW 640 0 0 0 0.417645 643 OW TIP3 0 12.7791 8.3108 20. 0412 OW 644 645 0 0 -0.834646 644 HW TIP3 0 13.5381 8.3108 2 0.5452 HW 643 0 0 0 0.417647 645 HW TIP3 0 13.5381 8.3108 19.5372 HW 643 0 0 0 0.417648 646 OW TIP3 0 12.7791 8.3108 23. 1245 OW 647 648 0 0 -0.834649 647 HW TIP3 0 13.5381 8.3108 2 3.6285 HW 646 0 0 0 0.417650 648 HW TIP3 0 13.5381 8.3108 2 2.6205 HW 646 0 0 0 0.417651 649 OW TIP3 0 12.7791 8.3108 26. 2077 OW 650 651 0 0 -0.834652 650 HW TIP3 0 13.5381 8.3108 2 6.7117 HW 649 0 0 0 0.417653 651 HW TIP3 0 13.5381 8.3108 2 5.7037 HW 649 0 0 0 0.417654 652 OW TIP3 0 12.7791 8.3108 29. 291OW 653 654 0 0 -0.834655 653 HW TIP3 0 13.5381 8.3108 29.795HW 652 0 0 0 0.417656 654 HW TIP3 0 13.5381 8.3108 2 8.787HW 652 0 0 0 0.417657 655 OW TIP3 0 12.7791 8.3108 32. 3743 OW 656 657 0 0 -0.834658 656 HW TIP3 0 13.5381 8.3108 3 2.8783 HW 655 0 0 0 0.417659 657 HW TIP3 0 13.5381 8.3108 3 1.8703 HW 655 0 0 0 0.417660 658 OW TIP3 0 12.7791 11.6351 1.54163 OW 659 660 0 0 -0.834661 659 HW TIP3 0 13.5381 11.6351 2. 04563 HW 658 0 0 0 0.417662 660 HW TIP3 0 13.5381 11.6351 1. 03763 HW 658 0 0 0 0.417663 661 OW TIP3 0 12.7791 11.6351 4.6249 OW 662 663 0 0 -0.834664 662 HW TIP3 0 13.5381 11.6351 5. 1289 HW 661 0 0 0 0.417665 663 HW TIP3 0 13.5381 11.6351 4. 1209 HW 661 0 0 0 0.417666 664 OW TIP3 0 12.7791 11.6351 7.70816 OW 665 666 0 0 -0.834667 665 HW TIP3 0 13.5381 11.6351 8. 21216 HW 664 0 0 0 0.417668 666 HW TIP3 0 13.5381 11.6351 7. 20416 HW 664 0 0 0 0.417669 667 OW TIP3 0 12.7791 11.6351 1 0.7914 OW 668 669 0 0 -0.834670 668 HW TIP3 0 13.5381 11.6351 11. 2954 HW 667 0 0 0 0.417671 669 HW TIP3 0 13.5381 11.6351 10. 2874 HW 667 0 0 0 0.417672 670 OW TIP3 0 12.7791 11.6351 1 3.8747 OW 671 672 0 0 -0.834673 671 HW TIP3 0 13.5381 11.6351 14. 3787 HW 670 0 0 0 0.417674 672 HW TIP3 0 13.5381 11.6351 13. 3707 HW 670 0 0 0 0.417675 673 OW TIP3 0 12.7791 11.6351 1 6.958OW 674 675 0 0 -0.834676 674 HW TIP3 0 13.5381 11.6351 17. 4619HW 673 0 0 0 0.417677 675 HW TIP3 0 13.5381 11.6351 16. 454HW 673 0 0 0 0.417678 676 OW TIP3 0 12.7791 11.6351 20. 0412 OW 677 678 0 0 -0.834679 677 HW TIP3 0 13.5381 11.6351 2 0.5452 HW 676 0 0 0 0.417680 678 HW TIP3 0 13.5381 11.6351 19.5372 HW 676 0 0 0 0.417681 679 OW TIP3 0 12.7791 11.6351 23. 1245 OW 680 681 0 0 -0.834682 680 HW TIP3 0 13.5381 11.6351 2 3.6285 HW 679 0 0 0 0.417683 681 HW TIP3 0 13.5381 11.6351 2 2.6205 HW 679 0 0 0 0.417684 682 OW TIP3 0 12.7791 11.6351 26. 2077 OW 683 684 0 0 -0.834685 683 HW TIP3 0 13.5381 11.6351 2 6.7117 HW 682 0 0 0 0.417686 684 HW TIP3 0 13.5381 11.6351 2 5.7037 HW 682 0 0 0 0.417687 685 OW TIP3 0 12.7791 11.6351 29. 291OW 686 687 0 0 -0.834688 686 HW TIP3 0 13.5381 11.6351 29.795HW 685 0 0 0 0.417689 687 HW TIP3 0 13.5381 11.6351 2 8.787HW 685 0 0 0 0.417690 688 OW TIP3 0 12.7791 11.6351 32. 3743 OW 689 690 0 0 -0.834691 689 HW TIP3 0 13.5381 11.6351 3 2.8783 HW 688 0 0 0 0.417692 690 HW TIP3 0 13.5381 11.6351 3 1.8703 HW 688 0 0 0 0.417693 691 OW TIP3 0 12.7791 14.9594 1.54163 OW 692 693 0 0 -0.834694 692 HW TIP3 0 13.5381 14.9594 2. 04563 HW 691 0 0 0 0.417695 693 HW TIP3 0 13.5381 14.9594 1. 03763 HW 691 0 0 0 0.417696 694 OW TIP3 0 12.7791 14.9594 4.6249 OW 695 696 0 0 -0.834697 695 HW TIP3 0 13.5381 14.9594 5. 1289 HW 694 0 0 0 0.417698 696 HW TIP3 0 13.5381 14.9594 4. 1209 HW 694 0 0 0 0.417699 697 OW TIP3 0 12.7791 14.9594 7.70816 OW 698 699 0 0 -0.834700 698 HW TIP3 0 13.5381 14.9594 8. 21216 HW 697 0 0 0 0.417701 699 HW TIP3 0 13.5381 14.9594 7. 20416 HW 697 0 0 0 0.417702 700 OW TIP3 0 12.7791 14.9594 1 0.7914 OW 701 702 0 0 -0.834703 701 HW TIP3 0 13.5381 14.9594 11. 2954 HW 700 0 0 0 0.417704 702 HW TIP3 0 13.5381 14.9594 10. 2874 HW 700 0 0 0 0.417705 703 OW TIP3 0 12.7791 14.9594 1 3.8747 OW 704 705 0 0 -0.834706 704 HW TIP3 0 13.5381 14.9594 14. 3787 HW 703 0 0 0 0.417707 705 HW TIP3 0 13.5381 14.9594 13. 3707 HW 703 0 0 0 0.417708 706 OW TIP3 0 12.7791 14.9594 1 6.958OW 707 708 0 0 -0.834709 707 HW TIP3 0 13.5381 14.9594 17. 4619HW 706 0 0 0 0.417710 708 HW TIP3 0 13.5381 14.9594 16. 454HW 706 0 0 0 0.417711 709 OW TIP3 0 12.7791 14.9594 20. 0412 OW 710 711 0 0 -0.834712 710 HW TIP3 0 13.5381 14.9594 2 0.5452 HW 709 0 0 0 0.417713 711 HW TIP3 0 13.5381 14.9594 19.5372 HW 709 0 0 0 0.417714 712 OW TIP3 0 12.7791 14.9594 23. 1245 OW 713 714 0 0 -0.834715 713 HW TIP3 0 13.5381 14.9594 2 3.6285 HW 712 0 0 0 0.417716 714 HW TIP3 0 13.5381 14.9594 2 2.6205 HW 712 0 0 0 0.417717 715 OW TIP3 0 12.7791 14.9594 26. 2077 OW 716 717 0 0 -0.834718 716 HW TIP3 0 13.5381 14.9594 2 6.7117 HW 715 0 0 0 0.417719 717 HW TIP3 0 13.5381 14.9594 2 5.7037 HW 715 0 0 0 0.417720 718 OW TIP3 0 12.7791 14.9594 29. 291OW 719 720 0 0 -0.834721 719 HW TIP3 0 13.5381 14.9594 29.795HW 718 0 0 0 0.417722 720 HW TIP3 0 13.5381 14.9594 2 8.787HW 718 0 0 0 0.417723 721 OW TIP3 0 12.7791 14.9594 32. 3743 OW 722 723 0 0 -0.834724 722 HW TIP3 0 13.5381 14.9594 3 2.8783 HW 721 0 0 0 0.417725 723 HW TIP3 0 13.5381 14.9594 3 1.8703 HW 721 0 0 0 0.41760 58 OW TIP3 0 1.4199 1.66216 2.04563 OW 59 60 0 0 -0.834 61 59 HW TIP3 0 2.1789 1.66216 2.54963 HW 58 0 0 0 0.417 62 60 HW TIP3 0 2.1789 1.66216 1.54163 HW 58 0 0 0 0.417 63 61 OW TIP3 0 1.4199 1.66216 5.1289 OW 62 63 0 0 -0.834 64 62 HW TIP3 0 2.1789 1.66216 5.6329 HW 61 0 0 0 0.417 65 63 HW TIP3 0 2.1789 1.66216 4.6249 HW 61 0 0 0 0.417 66 64 OW TIP3 0 1.4199 1.66216 8.21216 OW 65 66 0 0 -0.834 67 65 HW TIP3 0 2.1789 1.66216 8.71616 HW 64 0 0 0 0.417 68 66 HW TIP3 0 2.1789 1.66216 7.70816 HW 64 0 0 0 0.417 69 67 OW TIP3 0 1.4199 1.66216 11.2954 OW 68 69 0 0 -0.834 70 68 HW TIP3 0 2.1789 1.66216 11.7994 HW 67 0 0 0 0.417 71 69 HW TIP3 0 2.1789 1.66216 10.7914 HW 67 0 0 0 0.417 72 70 OW TIP3 0 1.4199 1.66216 14.3787 OW 71 72 0 0 -0.834 73 71 HW TIP3 0 2.1789 1.66216 14.8827 HW 70 0 0 0 0.417 74 72 HW TIP3 0 2.1789 1.66216 13.8747 HW 70 0 0 0 0.417 75 73 OW TIP3 0 1.4199 1.66216 17.4619 OW 74 75 0 0 -0.834 76 74 HW TIP3 0 2.1789 1.66216 17.966 HW 73 0 0 0 0.417 77 75 HW TIP3 0 2.1789 1.66216 16.958 HW 73 0 0 0 0.417 78 76 OW TIP3 0 1.4199 1.66216 20.5452 OW 77 78 0 0 -0.834 79 77 HW TIP3 0 2.1789 1.66216 21.0492 HW 76 0 0 0 0.417 80 78 HW TIP3 0 2.1789 1.66216 20.0412 HW 76 0 0 0 0.417 81 79 OW TIP3 0 1.4199 1.66216 23.6285 OW 80 81 0 0 -0.834 82 80 HW TIP3 0 2.1789 1.66216 24.1325 HW 79 0 0 0 0.417 83 81 HW TIP3 0 2.1789 1.66216 23.1245 HW 79 0 0 0 0.417 84 82 OW TIP3 0 1.4199 1.66216 26.7117 OW 83 84 0 0 -0.834 85 83 HW TIP3 0 2.1789 1.66216 27.2157 HW 82 0 0 0 0.417 86 84 HW TIP3 0 2.1789 1.66216 26.2077 HW 82 0 0 0 0.417 87 85 OW TIP3 0 1.4199 1.66216 29.795 OW 86 87 0 0 -0.834 88 86 HW TIP3 0 2.1789 1.66216 30.299 HW 85 0 0 0 0.417 89 87 HW TIP3 0 2.1789 1.66216 29.291 HW 85 0 0 0 0.417 90 88 OW TIP3 0 1.4199 1.66216 32.8783 OW 89 90 0 0 -0.834 91 89 HW TIP3 0 2.1789 1.66216 33.3823 HW 88 0 0 0 0.417 92 90 HW TIP3 0 2.1789 1.66216 32.3743 HW 88 0 0 0 0.417 93 91 OW TIP3 0 1.4199 4.98648 2.04563 OW 92 93 0 0 -0.834 94 92 HW TIP3 0 2.1789 4.98648 2.54963 HW 91 0 0 0 0.417 95 93 HW TIP3 0 2.1789 4.98648 1.54163 HW 91 0 0 0 0.417 96 94 OW TIP3 0 1.4199 4.98648 5.1289 OW 95 96 0 0 -0.834 97 95 HW TIP3 0 2.1789 4.98648 5.6329 HW 94 0 0 0 0.417 98 96 HW TIP3 0 2.1789 4.98648 4.6249 HW 94 0 0 0 0.417 99 97 OW TIP3 0 1.4199 4.98648 8.21216 OW 98 99 0 0 -0.834 100 98 HW TIP3 0 2.1789 4.98648 8.71616 HW 97 0 0 0 0.417 101 99 HW TIP3 0 2.1789 4.98648 7.70816 HW 97 0 0 0 0.417 102 100 OW TIP3 0 1.4199 4.98648 11.2954 OW 101 102 0 0 -0.834 103 101 HW TIP3 0 2.1789 4.98648 11.7994 HW 100 0 0 0 0.417 104 102 HW TIP3 0 2.1789 4.98648 10.7914 HW 100 0 0 0 0.417 105 103 OW TIP3 0 1.4199 4.98648 14.3787 OW 104 105 0 0 -0.834 106 104 HW TIP3 0 2.1789 4.98648 14.8827 HW 103 0 0 0 0.417 107 105 HW TIP3 0 2.1789 4.98648 13.8747 HW 103 0 0 0 0.417 108 106 OW TIP3 0 1.4199 4.98648 17.4619 OW 107 108 0 0 -0.834 109 107 HW TIP3 0 2.1789 4.98648 17.966 HW 106 0 0 0 0.417 110 108 HW TIP3 0 2.1789 4.98648 16.958 HW 106 0 0 0 0.417 111 109 OW TIP3 0 1.4199 4.98648 20.5452 OW 110 111 0 0 -0.834 112 110 HW TIP3 0 2.1789 4.98648 21.0492 HW 109 0 0 0 0.417 113 111 HW TIP3 0 2.1789 4.98648 20.0412 HW 109 0 0 0 0.417 114 112 OW TIP3 0 1.4199 4.98648 23.6285 OW 113 114 0 0 -0.834 115 113 HW TIP3 0 2.1789 4.98648 24.1325 HW 112 0 0 0 0.417 116 114 HW TIP3 0 2.1789 4.98648 23.1245 HW 112 0 0 0 0.417 117 115 OW TIP3 0 1.4199 4.98648 26.7117 OW 116 117 0 0 -0.834 118 116 HW TIP3 0 2.1789 4.98648 27.2157 HW 115 0 0 0 0.417 119 117 HW TIP3 0 2.1789 4.98648 26.2077 HW 115 0 0 0 0.417 120 118 OW TIP3 0 1.4199 4.98648 29.795 OW 119 120 0 0 -0.834 121 119 HW TIP3 0 2.1789 4.98648 30.299 HW 118 0 0 0 0.417 122 120 HW TIP3 0 2.1789 4.98648 29.291 HW 118 0 0 0 0.417 123 121 OW TIP3 0 1.4199 4.98648 32.8783 OW 122 123 0 0 -0.834 124 122 HW TIP3 0 2.1789 4.98648 33.3823 HW 121 0 0 0 0.417 125 123 HW TIP3 0 2.1789 4.98648 32.3743 HW 121 0 0 0 0.417 126 124 OW TIP3 0 1.4199 8.3108 2.04563 OW 125 126 0 0 -0.834 127 125 HW TIP3 0 2.1789 8.3108 2.54963 HW 124 0 0 0 0.417 128 126 HW TIP3 0 2.1789 8.3108 1.54163 HW 124 0 0 0 0.417 129 127 OW TIP3 0 1.4199 8.3108 5.1289 OW 128 129 0 0 -0.834 130 128 HW TIP3 0 2.1789 8.3108 5.6329 HW 127 0 0 0 0.417 131 129 HW TIP3 0 2.1789 8.3108 4.6249 HW 127 0 0 0 0.417 132 130 OW TIP3 0 1.4199 8.3108 8.21216 OW 131 132 0 0 -0.834 133 131 HW TIP3 0 2.1789 8.3108 8.71616 HW 130 0 0 0 0.417 134 132 HW TIP3 0 2.1789 8.3108 7.70816 HW 130 0 0 0 0.417 135 133 OW TIP3 0 1.4199 8.3108 11.2954 OW 134 135 0 0 -0.834 136 134 HW TIP3 0 2.1789 8.3108 11.7994 HW 133 0 0 0 0.417 137 135 HW TIP3 0 2.1789 8.3108 10.7914 HW 133 0 0 0 0.417 138 136 OW TIP3 0 1.4199 8.3108 14.3787 OW 137 138 0 0 -0.834 139 137 HW TIP3 0 2.1789 8.3108 14.8827 HW 136 0 0 0 0.417 140 138 HW TIP3 0 2.1789 8.3108 13.8747 HW 136 0 0 0 0.417 141 139 OW TIP3 0 1.4199 8.3108 17.4619 OW 140 141 0 0 -0.834 142 140 HW TIP3 0 2.1789 8.3108 17.966 HW 139 0 0 0 0.417 143 141 HW TIP3 0 2.1789 8.3108 16.958 HW 139 0 0 0 0.417 144 142 OW TIP3 0 1.4199 8.3108 20.5452 OW 143 144 0 0 -0.834 145 143 HW TIP3 0 2.1789 8.3108 21.0492 HW 142 0 0 0 0.417 146 144 HW TIP3 0 2.1789 8.3108 20.0412 HW 142 0 0 0 0.417 147 145 OW TIP3 0 1.4199 8.3108 23.6285 OW 146 147 0 0 -0.834 148 146 HW TIP3 0 2.1789 8.3108 24.1325 HW 145 0 0 0 0.417 149 147 HW TIP3 0 2.1789 8.3108 23.1245 HW 145 0 0 0 0.417 150 148 OW TIP3 0 1.4199 8.3108 26.7117 OW 149 150 0 0 -0.834 151 149 HW TIP3 0 2.1789 8.3108 27.2157 HW 148 0 0 0 0.417 152 150 HW TIP3 0 2.1789 8.3108 26.2077 HW 148 0 0 0 0.417 153 151 OW TIP3 0 1.4199 8.3108 29.795 OW 152 153 0 0 -0.834 154 152 HW TIP3 0 2.1789 8.3108 30.299 HW 151 0 0 0 0.417 155 153 HW TIP3 0 2.1789 8.3108 29.291 HW 151 0 0 0 0.417 156 154 OW TIP3 0 1.4199 8.3108 32.8783 OW 155 156 0 0 -0.834 157 155 HW TIP3 0 2.1789 8.3108 33.3823 HW 154 0 0 0 0.417 158 156 HW TIP3 0 2.1789 8.3108 32.3743 HW 154 0 0 0 0.417 159 157 OW TIP3 0 1.4199 11.6351 2.04563 OW 158 159 0 0 -0.834 160 158 HW TIP3 0 2.1789 11.6351 2.54963 HW 157 0 0 0 0.417 161 159 HW TIP3 0 2.1789 11.6351 1.54163 HW 157 0 0 0 0.417 162 160 OW TIP3 0 1.4199 11.6351 5.1289 OW 161 162 0 0 -0.834 163 161 HW TIP3 0 2.1789 11.6351 5.6329 HW 160 0 0 0 0.417 164 162 HW TIP3 0 2.1789 11.6351 4.6249 HW 160 0 0 0 0.417 165 163 OW TIP3 0 1.4199 11.6351 8.21216 OW 164 165 0 0 -0.834 166 164 HW TIP3 0 2.1789 11.6351 8.71616 HW 163 0 0 0 0.417 167 165 HW TIP3 0 2.1789 11.6351 7.70816 HW 163 0 0 0 0.417 168 166 OW TIP3 0 1.4199 11.6351 11.2954 OW 167 168 0 0 -0.834 169 167 HW TIP3 0 2.1789 11.6351 11.7994 HW 166 0 0 0 0.417 170 168 HW TIP3 0 2.1789 11.6351 10.7914 HW 166 0 0 0 0.417 171 169 OW TIP3 0 1.4199 11.6351 14.3787 OW 170 171 0 0 -0.834 172 170 HW TIP3 0 2.1789 11.6351 14.8827 HW 169 0 0 0 0.417 173 171 HW TIP3 0 2.1789 11.6351 13.8747 HW 169 0 0 0 0.417 174 172 OW TIP3 0 1.4199 11.6351 17.4619 OW 173 174 0 0 -0.834 175 173 HW TIP3 0 2.1789 11.6351 17.966 HW 172 0 0 0 0.417 176 174 HW TIP3 0 2.1789 11.6351 16.958 HW 172 0 0 0 0.417 177 175 OW TIP3 0 1.4199 11.6351 20.5452 OW 176 177 0 0 -0.834 178 176 HW TIP3 0 2.1789 11.6351 21.0492 HW 175 0 0 0 0.417 179 177 HW TIP3 0 2.1789 11.6351 20.0412 HW 175 0 0 0 0.417 180 178 OW TIP3 0 1.4199 11.6351 23.6285 OW 179 180 0 0 -0.834 181 179 HW TIP3 0 2.1789 11.6351 24.1325 HW 178 0 0 0 0.417 182 180 HW TIP3 0 2.1789 11.6351 23.1245 HW 178 0 0 0 0.417 183 181 OW TIP3 0 1.4199 11.6351 26.7117 OW 182 183 0 0 -0.834 184 182 HW TIP3 0 2.1789 11.6351 27.2157 HW 181 0 0 0 0.417 185 183 HW TIP3 0 2.1789 11.6351 26.2077 HW 181 0 0 0 0.417 186 184 OW TIP3 0 1.4199 11.6351 29.795 OW 185 186 0 0 -0.834 187 185 HW TIP3 0 2.1789 11.6351 30.299 HW 184 0 0 0 0.417 188 186 HW TIP3 0 2.1789 11.6351 29.291 HW 184 0 0 0 0.417 189 187 OW TIP3 0 1.4199 11.6351 32.8783 OW 188 189 0 0 -0.834 190 188 HW TIP3 0 2.1789 11.6351 33.3823 HW 187 0 0 0 0.417 191 189 HW TIP3 0 2.1789 11.6351 32.3743 HW 187 0 0 0 0.417 192 190 OW TIP3 0 1.4199 14.9594 2.04563 OW 191 192 0 0 -0.834 193 191 HW TIP3 0 2.1789 14.9594 2.54963 HW 190 0 0 0 0.417 194 192 HW TIP3 0 2.1789 14.9594 1.54163 HW 190 0 0 0 0.417 195 193 OW TIP3 0 1.4199 14.9594 5.1289 OW 194 195 0 0 -0.834 196 194 HW TIP3 0 2.1789 14.9594 5.6329 HW 193 0 0 0 0.417 197 195 HW TIP3 0 2.1789 14.9594 4.6249 HW 193 0 0 0 0.417 198 196 OW TIP3 0 1.4199 14.9594 8.21216 OW 197 198 0 0 -0.834 199 197 HW TIP3 0 2.1789 14.9594 8.71616 HW 196 0 0 0 0.417 200 198 HW TIP3 0 2.1789 14.9594 7.70816 HW 196 0 0 0 0.417 201 199 OW TIP3 0 1.4199 14.9594 11.2954 OW 200 201 0 0 -0.834 202 200 HW TIP3 0 2.1789 14.9594 11.7994 HW 199 0 0 0 0.417 203 201 HW TIP3 0 2.1789 14.9594 10.7914 HW 199 0 0 0 0.417 204 202 OW TIP3 0 1.4199 14.9594 14.3787 OW 203 204 0 0 -0.834 205 203 HW TIP3 0 2.1789 14.9594 14.8827 HW 202 0 0 0 0.417 206 204 HW TIP3 0 2.1789 14.9594 13.8747 HW 202 0 0 0 0.417 207 205 OW TIP3 0 1.4199 14.9594 17.4619 OW 206 207 0 0 -0.834 208 206 HW TIP3 0 2.1789 14.9594 17.966 HW 205 0 0 0 0.417 209 207 HW TIP3 0 2.1789 14.9594 16.958 HW 205 0 0 0 0.417 210 208 OW TIP3 0 1.4199 14.9594 20.5452 OW 209 210 0 0 -0.834 211 209 HW TIP3 0 2.1789 14.9594 21.0492 HW 208 0 0 0 0.417 212 210 HW TIP3 0 2.1789 14.9594 20.0412 HW 208 0 0 0 0.417 213 211 OW TIP3 0 1.4199 14.9594 23.6285 OW 212 213 0 0 -0.834 214 212 HW TIP3 0 2.1789 14.9594 24.1325 HW 211 0 0 0 0.417 215 213 HW TIP3 0 2.1789 14.9594 23.1245 HW 211 0 0 0 0.417 216 214 OW TIP3 0 1.4199 14.9594 26.7117 OW 215 216 0 0 -0.834 217 215 HW TIP3 0 2.1789 14.9594 27.2157 HW 214 0 0 0 0.417 218 216 HW TIP3 0 2.1789 14.9594 26.2077 HW 214 0 0 0 0.417 219 217 OW TIP3 0 1.4199 14.9594 29.795 OW 218 219 0 0 -0.834 220 218 HW TIP3 0 2.1789 14.9594 30.299 HW 217 0 0 0 0.417 221 219 HW TIP3 0 2.1789 14.9594 29.291 HW 217 0 0 0 0.417 222 220 OW TIP3 0 1.4199 14.9594 32.8783 OW 221 222 0 0 -0.834 223 221 HW TIP3 0 2.1789 14.9594 33.3823 HW 220 0 0 0 0.417 224 222 HW TIP3 0 2.1789 14.9594 32.3743 HW 220 0 0 0 0.417 225 223 OW TIP3 0 4.2597 1.66216 2.04563 OW 224 225 0 0 -0.834 226 224 HW TIP3 0 5.0187 1.66216 2.54963 HW 223 0 0 0 0.417 227 225 HW TIP3 0 5.0187 1.66216 1.54163 HW 223 0 0 0 0.417 228 226 OW TIP3 0 4.2597 1.66216 5.1289 OW 227 228 0 0 -0.834 229 227 HW TIP3 0 5.0187 1.66216 5.6329 HW 226 0 0 0 0.417 230 228 HW TIP3 0 5.0187 1.66216 4.6249 HW 226 0 0 0 0.417 231 229 OW TIP3 0 4.2597 1.66216 8.21216 OW 230 231 0 0 -0.834 232 230 HW TIP3 0 5.0187 1.66216 8.71616 HW 229 0 0 0 0.417 233 231 HW TIP3 0 5.0187 1.66216 7.70816 HW 229 0 0 0 0.417 234 232 OW TIP3 0 4.2597 1.66216 11.2954 OW 233 234 0 0 -0.834 235 233 HW TIP3 0 5.0187 1.66216 11.7994 HW 232 0 0 0 0.417 236 234 HW TIP3 0 5.0187 1.66216 10.7914 HW 232 0 0 0 0.417 237 235 OW TIP3 0 4.2597 1.66216 14.3787 OW 236 237 0 0 -0.834 238 236 HW TIP3 0 5.0187 1.66216 14.8827 HW 235 0 0 0 0.417 239 237 HW TIP3 0 5.0187 1.66216 13.8747 HW 235 0 0 0 0.417 240 238 OW TIP3 0 4.2597 1.66216 17.4619 OW 239 240 0 0 -0.834 241 239 HW TIP3 0 5.0187 1.66216 17.966 HW 238 0 0 0 0.417 242 240 HW TIP3 0 5.0187 1.66216 16.958 HW 238 0 0 0 0.417 243 241 OW TIP3 0 4.2597 1.66216 20.5452 OW 242 243 0 0 -0.834 244 242 HW TIP3 0 5.0187 1.66216 21.0492 HW 241 0 0 0 0.417 245 243 HW TIP3 0 5.0187 1.66216 20.0412 HW 241 0 0 0 0.417 246 244 OW TIP3 0 4.2597 1.66216 23.6285 OW 245 246 0 0 -0.834 247 245 HW TIP3 0 5.0187 1.66216 24.1325 HW 244 0 0 0 0.417 248 246 HW TIP3 0 5.0187 1.66216 23.1245 HW 244 0 0 0 0.417 249 247 OW TIP3 0 4.2597 1.66216 26.7117 OW 248 249 0 0 -0.834 250 248 HW TIP3 0 5.0187 1.66216 27.2157 HW 247 0 0 0 0.417 251 249 HW TIP3 0 5.0187 1.66216 26.2077 HW 247 0 0 0 0.417 252 250 OW TIP3 0 4.2597 1.66216 29.795 OW 251 252 0 0 -0.834 253 251 HW TIP3 0 5.0187 1.66216 30.299 HW 250 0 0 0 0.417 254 252 HW TIP3 0 5.0187 1.66216 29.291 HW 250 0 0 0 0.417 255 253 OW TIP3 0 4.2597 1.66216 32.8783 OW 254 255 0 0 -0.834 256 254 HW TIP3 0 5.0187 1.66216 33.3823 HW 253 0 0 0 0.417 257 255 HW TIP3 0 5.0187 1.66216 32.3743 HW 253 0 0 0 0.417 258 256 OW TIP3 0 4.2597 4.98648 2.04563 OW 257 258 0 0 -0.834 259 257 HW TIP3 0 5.0187 4.98648 2.54963 HW 256 0 0 0 0.417 260 258 HW TIP3 0 5.0187 4.98648 1.54163 HW 256 0 0 0 0.417 261 259 OW TIP3 0 4.2597 4.98648 5.1289 OW 260 261 0 0 -0.834 262 260 HW TIP3 0 5.0187 4.98648 5.6329 HW 259 0 0 0 0.417 263 261 HW TIP3 0 5.0187 4.98648 4.6249 HW 259 0 0 0 0.417 264 262 OW TIP3 0 4.2597 4.98648 8.21216 OW 263 264 0 0 -0.834 265 263 HW TIP3 0 5.0187 4.98648 8.71616 HW 262 0 0 0 0.417 266 264 HW TIP3 0 5.0187 4.98648 7.70816 HW 262 0 0 0 0.417 267 265 OW TIP3 0 4.2597 4.98648 11.2954 OW 266 267 0 0 -0.834 268 266 HW TIP3 0 5.0187 4.98648 11.7994 HW 265 0 0 0 0.417 269 267 HW TIP3 0 5.0187 4.98648 10.7914 HW 265 0 0 0 0.417 270 268 OW TIP3 0 4.2597 4.98648 14.3787 OW 269 270 0 0 -0.834 271 269 HW TIP3 0 5.0187 4.98648 14.8827 HW 268 0 0 0 0.417 272 270 HW TIP3 0 5.0187 4.98648 13.8747 HW 268 0 0 0 0.417 273 271 OW TIP3 0 4.2597 4.98648 29.795 OW 272 273 0 0 -0.834 274 272 HW TIP3 0 5.0187 4.98648 30.299 HW 271 0 0 0 0.417 275 273 HW TIP3 0 5.0187 4.98648 29.291 HW 271 0 0 0 0.417 276 274 OW TIP3 0 4.2597 4.98648 32.8783 OW 275 276 0 0 -0.834 277 275 HW TIP3 0 5.0187 4.98648 33.3823 HW 274 0 0 0 0.417 278 276 HW TIP3 0 5.0187 4.98648 32.3743 HW 274 0 0 0 0.417 279 277 OW TIP3 0 4.2597 8.3108 2.04563 OW 278 279 0 0 -0.834 280 278 HW TIP3 0 5.0187 8.3108 2.54963 HW 277 0 0 0 0.417 281 279 HW TIP3 0 5.0187 8.3108 1.54163 HW 277 0 0 0 0.417 282 280 OW TIP3 0 4.2597 8.3108 32.8783 OW 281 282 0 0 -0.834 283 281 HW TIP3 0 5.0187 8.3108 33.3823 HW 280 0 0 0 0.417 284 282 HW TIP3 0 5.0187 8.3108 32.3743 HW 280 0 0 0 0.417 285 283 OW TIP3 0 4.2597 11.6351 2.04563 OW 284 285 0 0 -0.834 286 284 HW TIP3 0 5.0187 11.6351 2.54963 HW 283 0 0 0 0.417 287 285 HW TIP3 0 5.0187 11.6351 1.54163 HW 283 0 0 0 0.417 288 286 OW TIP3 0 4.2597 11.6351 8.21216 OW 287 288 0 0 -0.834 289 287 HW TIP3 0 5.0187 11.6351 8.71616 HW 286 0 0 0 0.417 290 288 HW TIP3 0 5.0187 11.6351 7.70816 HW 286 0 0 0 0.417 291 289 OW TIP3 0 4.2597 11.6351 11.2954 OW 290 291 0 0 -0.834 292 290 HW TIP3 0 5.0187 11.6351 11.7994 HW 289 0 0 0 0.417 293 291 HW TIP3 0 5.0187 11.6351 10.7914 HW 289 0 0 0 0.417 294 292 OW TIP3 0 4.2597 11.6351 14.3787 OW 293 294 0 0 -0.834 295 293 HW TIP3 0 5.0187 11.6351 14.8827 HW 292 0 0 0 0.417 296 294 HW TIP3 0 5.0187 11.6351 13.8747 HW 292 0 0 0 0.417 297 295 OW TIP3 0 4.2597 11.6351 17.4619 OW 296 297 0 0 -0.834 298 296 HW TIP3 0 5.0187 11.6351 17.966 HW 295 0 0 0 0.417 299 297 HW TIP3 0 5.0187 11.6351 16.958 HW 295 0 0 0 0.417 300 298 OW TIP3 0 4.2597 11.6351 20.5452 OW 299 300 0 0 -0.834 301 299 HW TIP3 0 5.0187 11.6351 21.0492 HW 298 0 0 0 0.417 302 300 HW TIP3 0 5.0187 11.6351 20.0412 HW 298 0 0 0 0.417 303 301 OW TIP3 0 4.2597 11.6351 23.6285 OW 302 303 0 0 -0.834 304 302 HW TIP3 0 5.0187 11.6351 24.1325 HW 301 0 0 0 0.417 305 303 HW TIP3 0 5.0187 11.6351 23.1245 HW 301 0 0 0 0.417 306 304 OW TIP3 0 4.2597 11.6351 26.7117 OW 305 306 0 0 -0.834 307 305 HW TIP3 0 5.0187 11.6351 27.2157 HW 304 0 0 0 0.417 308 306 HW TIP3 0 5.0187 11.6351 26.2077 HW 304 0 0 0 0.417 309 307 OW TIP3 0 4.2597 11.6351 29.795 OW 308 309 0 0 -0.834 310 308 HW TIP3 0 5.0187 11.6351 30.299 HW 307 0 0 0 0.417 311 309 HW TIP3 0 5.0187 11.6351 29.291 HW 307 0 0 0 0.417 312 310 OW TIP3 0 4.2597 11.6351 32.8783 OW 311 312 0 0 -0.834 313 311 HW TIP3 0 5.0187 11.6351 33.3823 HW 310 0 0 0 0.417 314 312 HW TIP3 0 5.0187 11.6351 32.3743 HW 310 0 0 0 0.417 315 313 OW TIP3 0 4.2597 14.9594 2.04563 OW 314 315 0 0 -0.834 316 314 HW TIP3 0 5.0187 14.9594 2.54963 HW 313 0 0 0 0.417 317 315 HW TIP3 0 5.0187 14.9594 1.54163 HW 313 0 0 0 0.417 318 316 OW TIP3 0 4.2597 14.9594 5.1289 OW 317 318 0 0 -0.834 319 317 HW TIP3 0 5.0187 14.9594 5.6329 HW 316 0 0 0 0.417 320 318 HW TIP3 0 5.0187 14.9594 4.6249 HW 316 0 0 0 0.417 321 319 OW TIP3 0 4.2597 14.9594 8.21216 OW 320 321 0 0 -0.834 322 320 HW TIP3 0 5.0187 14.9594 8.71616 HW 319 0 0 0 0.417 323 321 HW TIP3 0 5.0187 14.9594 7.70816 HW 319 0 0 0 0.417 324 322 OW TIP3 0 4.2597 14.9594 11.2954 OW 323 324 0 0 -0.834 325 323 HW TIP3 0 5.0187 14.9594 11.7994 HW 322 0 0 0 0.417 326 324 HW TIP3 0 5.0187 14.9594 10.7914 HW 322 0 0 0 0.417 327 325 OW TIP3 0 4.2597 14.9594 14.3787 OW 326 327 0 0 -0.834 328 326 HW TIP3 0 5.0187 14.9594 14.8827 HW 325 0 0 0 0.417 329 327 HW TIP3 0 5.0187 14.9594 13.8747 HW 325 0 0 0 0.417 330 328 OW TIP3 0 4.2597 14.9594 17.4619 OW 329 330 0 0 -0.834 331 329 HW TIP3 0 5.0187 14.9594 17.966 HW 328 0 0 0 0.417 332 330 HW TIP3 0 5.0187 14.9594 16.958 HW 328 0 0 0 0.417 333 331 OW TIP3 0 4.2597 14.9594 20.5452 OW 332 333 0 0 -0.834 334 332 HW TIP3 0 5.0187 14.9594 21.0492 HW 331 0 0 0 0.417 335 333 HW TIP3 0 5.0187 14.9594 20.0412 HW 331 0 0 0 0.417 336 334 OW TIP3 0 4.2597 14.9594 23.6285 OW 335 336 0 0 -0.834 337 335 HW TIP3 0 5.0187 14.9594 24.1325 HW 334 0 0 0 0.417 338 336 HW TIP3 0 5.0187 14.9594 23.1245 HW 334 0 0 0 0.417 339 337 OW TIP3 0 4.2597 14.9594 26.7117 OW 338 339 0 0 -0.834 340 338 HW TIP3 0 5.0187 14.9594 27.2157 HW 337 0 0 0 0.417 341 339 HW TIP3 0 5.0187 14.9594 26.2077 HW 337 0 0 0 0.417 342 340 OW TIP3 0 4.2597 14.9594 29.795 OW 341 342 0 0 -0.834 343 341 HW TIP3 0 5.0187 14.9594 30.299 HW 340 0 0 0 0.417 344 342 HW TIP3 0 5.0187 14.9594 29.291 HW 340 0 0 0 0.417 345 343 OW TIP3 0 4.2597 14.9594 32.8783 OW 344 345 0 0 -0.834 346 344 HW TIP3 0 5.0187 14.9594 33.3823 HW 343 0 0 0 0.417 347 345 HW TIP3 0 5.0187 14.9594 32.3743 HW 343 0 0 0 0.417 348 346 OW TIP3 0 7.0995 1.66216 2.04563 OW 347 348 0 0 -0.834 349 347 HW TIP3 0 7.8585 1.66216 2.54963 HW 346 0 0 0 0.417 350 348 HW TIP3 0 7.8585 1.66216 1.54163 HW 346 0 0 0 0.417 351 349 OW TIP3 0 7.0995 1.66216 5.1289 OW 350 351 0 0 -0.834 352 350 HW TIP3 0 7.8585 1.66216 5.6329 HW 349 0 0 0 0.417 353 351 HW TIP3 0 7.8585 1.66216 4.6249 HW 349 0 0 0 0.417 354 352 OW TIP3 0 7.0995 1.66216 8.21216 OW 353 354 0 0 -0.834 355 353 HW TIP3 0 7.8585 1.66216 8.71616 HW 352 0 0 0 0.417 356 354 HW TIP3 0 7.8585 1.66216 7.70816 HW 352 0 0 0 0.417 357 355 OW TIP3 0 7.0995 1.66216 11.2954 OW 356 357 0 0 -0.834 358 356 HW TIP3 0 7.8585 1.66216 11.7994 HW 355 0 0 0 0.417 359 357 HW TIP3 0 7.8585 1.66216 10.7914 HW 355 0 0 0 0.417 360 358 OW TIP3 0 7.0995 1.66216 14.3787 OW 359 360 0 0 -0.834 361 359 HW TIP3 0 7.8585 1.66216 14.8827 HW 358 0 0 0 0.417 362 360 HW TIP3 0 7.8585 1.66216 13.8747 HW 358 0 0 0 0.417 363 361 OW TIP3 0 7.0995 1.66216 17.4619 OW 362 363 0 0 -0.834 364 362 HW TIP3 0 7.8585 1.66216 17.966 HW 361 0 0 0 0.417 365 363 HW TIP3 0 7.8585 1.66216 16.958 HW 361 0 0 0 0.417 366 364 OW TIP3 0 7.0995 1.66216 20.5452 OW 365 366 0 0 -0.834 367 365 HW TIP3 0 7.8585 1.66216 21.0492 HW 364 0 0 0 0.417 368 366 HW TIP3 0 7.8585 1.66216 20.0412 HW 364 0 0 0 0.417 369 367 OW TIP3 0 7.0995 1.66216 23.6285 OW 368 369 0 0 -0.834 370 368 HW TIP3 0 7.8585 1.66216 24.1325 HW 367 0 0 0 0.417 371 369 HW TIP3 0 7.8585 1.66216 23.1245 HW 367 0 0 0 0.417 372 370 OW TIP3 0 7.0995 1.66216 26.7117 OW 371 372 0 0 -0.834 373 371 HW TIP3 0 7.8585 1.66216 27.2157 HW 370 0 0 0 0.417 374 372 HW TIP3 0 7.8585 1.66216 26.2077 HW 370 0 0 0 0.417 375 373 OW TIP3 0 7.0995 1.66216 29.795 OW 374 375 0 0 -0.834 376 374 HW TIP3 0 7.8585 1.66216 30.299 HW 373 0 0 0 0.417 377 375 HW TIP3 0 7.8585 1.66216 29.291 HW 373 0 0 0 0.417 378 376 OW TIP3 0 7.0995 1.66216 32.8783 OW 377 378 0 0 -0.834 379 377 HW TIP3 0 7.8585 1.66216 33.3823 HW 376 0 0 0 0.417 380 378 HW TIP3 0 7.8585 1.66216 32.3743 HW 376 0 0 0 0.417 381 379 OW TIP3 0 7.0995 4.98648 2.04563 OW 380 381 0 0 -0.834 382 380 HW TIP3 0 7.8585 4.98648 2.54963 HW 379 0 0 0 0.417 383 381 HW TIP3 0 7.8585 4.98648 1.54163 HW 379 0 0 0 0.417 384 382 OW TIP3 0 7.0995 4.98648 5.1289 OW 383 384 0 0 -0.834 385 383 HW TIP3 0 7.8585 4.98648 5.6329 HW 382 0 0 0 0.417 386 384 HW TIP3 0 7.8585 4.98648 4.6249 HW 382 0 0 0 0.417 387 385 OW TIP3 0 7.0995 4.98648 11.2954 OW 386 387 0 0 -0.834 388 386 HW TIP3 0 7.8585 4.98648 11.7994 HW 385 0 0 0 0.417 389 387 HW TIP3 0 7.8585 4.98648 10.7914 HW 385 0 0 0 0.417 390 388 OW TIP3 0 7.0995 4.98648 32.8783 OW 389 390 0 0 -0.834 391 389 HW TIP3 0 7.8585 4.98648 33.3823 HW 388 0 0 0 0.417 392 390 HW TIP3 0 7.8585 4.98648 32.3743 HW 388 0 0 0 0.417 393 391 OW TIP3 0 7.0995 8.3108 2.04563 OW 392 393 0 0 -0.834 394 392 HW TIP3 0 7.8585 8.3108 2.54963 HW 391 0 0 0 0.417 395 393 HW TIP3 0 7.8585 8.3108 1.54163 HW 391 0 0 0 0.417 396 394 OW TIP3 0 7.0995 8.3108 32.8783 OW 395 396 0 0 -0.834 397 395 HW TIP3 0 7.8585 8.3108 33.3823 HW 394 0 0 0 0.417 398 396 HW TIP3 0 7.8585 8.3108 32.3743 HW 394 0 0 0 0.417 399 397 OW TIP3 0 7.0995 11.6351 2.04563 OW 398 399 0 0 -0.834 400 398 HW TIP3 0 7.8585 11.6351 2.54963 HW 397 0 0 0 0.417 401 399 HW TIP3 0 7.8585 11.6351 1.54163 HW 397 0 0 0 0.417 402 400 OW TIP3 0 7.0995 11.6351 20.5452 OW 401 402 0 0 -0.834 403 401 HW TIP3 0 7.8585 11.6351 21.0492 HW 400 0 0 0 0.417 404 402 HW TIP3 0 7.8585 11.6351 20.0412 HW 400 0 0 0 0.417 405 403 OW TIP3 0 7.0995 11.6351 23.6285 OW 404 405 0 0 -0.834 406 404 HW TIP3 0 7.8585 11.6351 24.1325 HW 403 0 0 0 0.417 407 405 HW TIP3 0 7.8585 11.6351 23.1245 HW 403 0 0 0 0.417 408 406 OW TIP3 0 7.0995 11.6351 29.795 OW 407 408 0 0 -0.834 409 407 HW TIP3 0 7.8585 11.6351 30.299 HW 406 0 0 0 0.417 410 408 HW TIP3 0 7.8585 11.6351 29.291 HW 406 0 0 0 0.417 411 409 OW TIP3 0 7.0995 11.6351 32.8783 OW 410 411 0 0 -0.834 412 410 HW TIP3 0 7.8585 11.6351 33.3823 HW 409 0 0 0 0.417 413 411 HW TIP3 0 7.8585 11.6351 32.3743 HW 409 0 0 0 0.417 414 412 OW TIP3 0 7.0995 14.9594 2.04563 OW 413 414 0 0 -0.834 415 413 HW TIP3 0 7.8585 14.9594 2.54963 HW 412 0 0 0 0.417 416 414 HW TIP3 0 7.8585 14.9594 1.54163 HW 412 0 0 0 0.417 417 415 OW TIP3 0 7.0995 14.9594 5.1289 OW 416 417 0 0 -0.834 418 416 HW TIP3 0 7.8585 14.9594 5.6329 HW 415 0 0 0 0.417 419 417 HW TIP3 0 7.8585 14.9594 4.6249 HW 415 0 0 0 0.417 420 418 OW TIP3 0 7.0995 14.9594 8.21216 OW 419 420 0 0 -0.834 421 419 HW TIP3 0 7.8585 14.9594 8.71616 HW 418 0 0 0 0.417 422 420 HW TIP3 0 7.8585 14.9594 7.70816 HW 418 0 0 0 0.417 423 421 OW TIP3 0 7.0995 14.9594 11.2954 OW 422 423 0 0 -0.834 424 422 HW TIP3 0 7.8585 14.9594 11.7994 HW 421 0 0 0 0.417 425 423 HW TIP3 0 7.8585 14.9594 10.7914 HW 421 0 0 0 0.417 426 424 OW TIP3 0 7.0995 14.9594 14.3787 OW 425 426 0 0 -0.834 427 425 HW TIP3 0 7.8585 14.9594 14.8827 HW 424 0 0 0 0.417 428 426 HW TIP3 0 7.8585 14.9594 13.8747 HW 424 0 0 0 0.417 429 427 OW TIP3 0 7.0995 14.9594 17.4619 OW 428 429 0 0 -0.834 430 428 HW TIP3 0 7.8585 14.9594 17.966 HW 427 0 0 0 0.417 431 429 HW TIP3 0 7.8585 14.9594 16.958 HW 427 0 0 0 0.417 432 430 OW TIP3 0 7.0995 14.9594 20.5452 OW 431 432 0 0 -0.834 433 431 HW TIP3 0 7.8585 14.9594 21.0492 HW 430 0 0 0 0.417 434 432 HW TIP3 0 7.8585 14.9594 20.0412 HW 430 0 0 0 0.417 435 433 OW TIP3 0 7.0995 14.9594 23.6285 OW 434 435 0 0 -0.834 436 434 HW TIP3 0 7.8585 14.9594 24.1325 HW 433 0 0 0 0.417 437 435 HW TIP3 0 7.8585 14.9594 23.1245 HW 433 0 0 0 0.417 438 436 OW TIP3 0 7.0995 14.9594 26.7117 OW 437 438 0 0 -0.834 439 437 HW TIP3 0 7.8585 14.9594 27.2157 HW 436 0 0 0 0.417 440 438 HW TIP3 0 7.8585 14.9594 26.2077 HW 436 0 0 0 0.417 441 439 OW TIP3 0 7.0995 14.9594 29.795 OW 440 441 0 0 -0.834 442 440 HW TIP3 0 7.8585 14.9594 30.299 HW 439 0 0 0 0.417 443 441 HW TIP3 0 7.8585 14.9594 29.291 HW 439 0 0 0 0.417 444 442 OW TIP3 0 7.0995 14.9594 32.8783 OW 443 444 0 0 -0.834 445 443 HW TIP3 0 7.8585 14.9594 33.3823 HW 442 0 0 0 0.417 446 444 HW TIP3 0 7.8585 14.9594 32.3743 HW 442 0 0 0 0.417 447 445 OW TIP3 0 9.9393 1.66216 2.04563 OW 446 447 0 0 -0.834 448 446 HW TIP3 0 10.6983 1.66216 2.54963 HW 445 0 0 0 0.417 449 447 HW TIP3 0 10.6983 1.66216 1.54163 HW 445 0 0 0 0.417 450 448 OW TIP3 0 9.9393 1.66216 5.1289 OW 449 450 0 0 -0.834 451 449 HW TIP3 0 10.6983 1.66216 5.6329 HW 448 0 0 0 0.417 452 450 HW TIP3 0 10.6983 1.66216 4.6249 HW 448 0 0 0 0.417 453 451 OW TIP3 0 9.9393 1.66216 8.21216 OW 452 453 0 0 -0.834 454 452 HW TIP3 0 10.6983 1.66216 8.71616 HW 451 0 0 0 0.417 455 453 HW TIP3 0 10.6983 1.66216 7.70816 HW 451 0 0 0 0.417 456 454 OW TIP3 0 9.9393 1.66216 11.2954 OW 455 456 0 0 -0.834 457 455 HW TIP3 0 10.6983 1.66216 11.7994 HW 454 0 0 0 0.417 458 456 HW TIP3 0 10.6983 1.66216 10.7914 HW 454 0 0 0 0.417 459 457 OW TIP3 0 9.9393 1.66216 14.3787 OW 458 459 0 0 -0.834 460 458 HW TIP3 0 10.6983 1.66216 14.8827 HW 457 0 0 0 0.417 461 459 HW TIP3 0 10.6983 1.66216 13.8747 HW 457 0 0 0 0.417 462 460 OW TIP3 0 9.9393 1.66216 17.4619 OW 461 462 0 0 -0.834 463 461 HW TIP3 0 10.6983 1.66216 17.966 HW 460 0 0 0 0.417 464 462 HW TIP3 0 10.6983 1.66216 16.958 HW 460 0 0 0 0.417 465 463 OW TIP3 0 9.9393 1.66216 20.5452 OW 464 465 0 0 -0.834 466 464 HW TIP3 0 10.6983 1.66216 21.0492 HW 463 0 0 0 0.417 467 465 HW TIP3 0 10.6983 1.66216 20.0412 HW 463 0 0 0 0.417 468 466 OW TIP3 0 9.9393 1.66216 23.6285 OW 467 468 0 0 -0.834 469 467 HW TIP3 0 10.6983 1.66216 24.1325 HW 466 0 0 0 0.417 470 468 HW TIP3 0 10.6983 1.66216 23.1245 HW 466 0 0 0 0.417 471 469 OW TIP3 0 9.9393 1.66216 26.7117 OW 470 471 0 0 -0.834 472 470 HW TIP3 0 10.6983 1.66216 27.2157 HW 469 0 0 0 0.417 473 471 HW TIP3 0 10.6983 1.66216 26.2077 HW 469 0 0 0 0.417 474 472 OW TIP3 0 9.9393 1.66216 29.795 OW 473 474 0 0 -0.834 475 473 HW TIP3 0 10.6983 1.66216 30.299 HW 472 0 0 0 0.417 476 474 HW TIP3 0 10.6983 1.66216 29.291 HW 472 0 0 0 0.417 477 475 OW TIP3 0 9.9393 1.66216 32.8783 OW 476 477 0 0 -0.834 478 476 HW TIP3 0 10.6983 1.66216 33.3823 HW 475 0 0 0 0.417 479 477 HW TIP3 0 10.6983 1.66216 32.3743 HW 475 0 0 0 0.417 480 478 OW TIP3 0 9.9393 4.98648 2.04563 OW 479 480 0 0 -0.834 481 479 HW TIP3 0 10.6983 4.98648 2.54963 HW 478 0 0 0 0.417 482 480 HW TIP3 0 10.6983 4.98648 1.54163 HW 478 0 0 0 0.417 483 481 OW TIP3 0 9.9393 4.98648 5.1289 OW 482 483 0 0 -0.834 484 482 HW TIP3 0 10.6983 4.98648 5.6329 HW 481 0 0 0 0.417 485 483 HW TIP3 0 10.6983 4.98648 4.6249 HW 481 0 0 0 0.417 486 484 OW TIP3 0 9.9393 4.98648 8.21216 OW 485 486 0 0 -0.834 487 485 HW TIP3 0 10.6983 4.98648 8.71616 HW 484 0 0 0 0.417 488 486 HW TIP3 0 10.6983 4.98648 7.70816 HW 484 0 0 0 0.417 489 487 OW TIP3 0 9.9393 4.98648 11.2954 OW 488 489 0 0 -0.834 490 488 HW TIP3 0 10.6983 4.98648 11.7994 HW 487 0 0 0 0.417 491 489 HW TIP3 0 10.6983 4.98648 10.7914 HW 487 0 0 0 0.417 492 490 OW TIP3 0 9.9393 4.98648 17.4619 OW 491 492 0 0 -0.834 493 491 HW TIP3 0 10.6983 4.98648 17.966 HW 490 0 0 0 0.417 494 492 HW TIP3 0 10.6983 4.98648 16.958 HW 490 0 0 0 0.417 495 493 OW TIP3 0 9.9393 4.98648 32.8783 OW 494 495 0 0 -0.834 496 494 HW TIP3 0 10.6983 4.98648 33.3823 HW 493 0 0 0 0.417 497 495 HW TIP3 0 10.6983 4.98648 32.3743 HW 493 0 0 0 0.417 498 496 OW TIP3 0 9.9393 8.3108 2.04563 OW 497 498 0 0 -0.834 499 497 HW TIP3 0 10.6983 8.3108 2.54963 HW 496 0 0 0 0.417 500 498 HW TIP3 0 10.6983 8.3108 1.54163 HW 496 0 0 0 0.417 501 499 OW TIP3 0 9.9393 8.3108 32.8783 OW 500 501 0 0 -0.834 502 500 HW TIP3 0 10.6983 8.3108 33.3823 HW 499 0 0 0 0.417 503 501 HW TIP3 0 10.6983 8.3108 32.3743 HW 499 0 0 0 0.417 504 502 OW TIP3 0 9.9393 11.6351 2.04563 OW 503 504 0 0 -0.834 505 503 HW TIP3 0 10.6983 11.6351 2.54963 HW 502 0 0 0 0.417 506 504 HW TIP3 0 10.6983 11.6351 1.54163 HW 502 0 0 0 0.417 507 505 OW TIP3 0 9.9393 11.6351 14.3787 OW 506 507 0 0 -0.834 508 506 HW TIP3 0 10.6983 11.6351 14.8827 HW 505 0 0 0 0.417 509 507 HW TIP3 0 10.6983 11.6351 13.8747 HW 505 0 0 0 0.417 510 508 OW TIP3 0 9.9393 11.6351 17.4619 OW 509 510 0 0 -0.834 511 509 HW TIP3 0 10.6983 11.6351 17.966 HW 508 0 0 0 0.417 512 510 HW TIP3 0 10.6983 11.6351 16.958 HW 508 0 0 0 0.417 513 511 OW TIP3 0 9.9393 11.6351 20.5452 OW 512 513 0 0 -0.834 514 512 HW TIP3 0 10.6983 11.6351 21.0492 HW 511 0 0 0 0.417 515 513 HW TIP3 0 10.6983 11.6351 20.0412 HW 511 0 0 0 0.417 516 514 OW TIP3 0 9.9393 11.6351 23.6285 OW 515 516 0 0 -0.834 517 515 HW TIP3 0 10.6983 11.6351 24.1325 HW 514 0 0 0 0.417 518 516 HW TIP3 0 10.6983 11.6351 23.1245 HW 514 0 0 0 0.417 519 517 OW TIP3 0 9.9393 11.6351 26.7117 OW 518 519 0 0 -0.834 520 518 HW TIP3 0 10.6983 11.6351 27.2157 HW 517 0 0 0 0.417 521 519 HW TIP3 0 10.6983 11.6351 26.2077 HW 517 0 0 0 0.417 522 520 OW TIP3 0 9.9393 11.6351 29.795 OW 521 522 0 0 -0.834 523 521 HW TIP3 0 10.6983 11.6351 30.299 HW 520 0 0 0 0.417 524 522 HW TIP3 0 10.6983 11.6351 29.291 HW 520 0 0 0 0.417 525 523 OW TIP3 0 9.9393 11.6351 32.8783 OW 524 525 0 0 -0.834 526 524 HW TIP3 0 10.6983 11.6351 33.3823 HW 523 0 0 0 0.417 527 525 HW TIP3 0 10.6983 11.6351 32.3743 HW 523 0 0 0 0.417 528 526 OW TIP3 0 9.9393 14.9594 2.04563 OW 527 528 0 0 -0.834 529 527 HW TIP3 0 10.6983 14.9594 2.54963 HW 526 0 0 0 0.417 530 528 HW TIP3 0 10.6983 14.9594 1.54163 HW 526 0 0 0 0.417 531 529 OW TIP3 0 9.9393 14.9594 5.1289 OW 530 531 0 0 -0.834 532 530 HW TIP3 0 10.6983 14.9594 5.6329 HW 529 0 0 0 0.417 533 531 HW TIP3 0 10.6983 14.9594 4.6249 HW 529 0 0 0 0.417 534 532 OW TIP3 0 9.9393 14.9594 8.21216 OW 533 534 0 0 -0.834 535 533 HW TIP3 0 10.6983 14.9594 8.71616 HW 532 0 0 0 0.417 536 534 HW TIP3 0 10.6983 14.9594 7.70816 HW 532 0 0 0 0.417 537 535 OW TIP3 0 9.9393 14.9594 11.2954 OW 536 537 0 0 -0.834 538 536 HW TIP3 0 10.6983 14.9594 11.7994 HW 535 0 0 0 0.417 539 537 HW TIP3 0 10.6983 14.9594 10.7914 HW 535 0 0 0 0.417 540 538 OW TIP3 0 9.9393 14.9594 14.3787 OW 539 540 0 0 -0.834 541 539 HW TIP3 0 10.6983 14.9594 14.8827 HW 538 0 0 0 0.417 542 540 HW TIP3 0 10.6983 14.9594 13.8747 HW 538 0 0 0 0.417 543 541 OW TIP3 0 9.9393 14.9594 17.4619 OW 542 543 0 0 -0.834 544 542 HW TIP3 0 10.6983 14.9594 17.966 HW 541 0 0 0 0.417 545 543 HW TIP3 0 10.6983 14.9594 16.958 HW 541 0 0 0 0.417 546 544 OW TIP3 0 9.9393 14.9594 20.5452 OW 545 546 0 0 -0.834 547 545 HW TIP3 0 10.6983 14.9594 21.0492 HW 544 0 0 0 0.417 548 546 HW TIP3 0 10.6983 14.9594 20.0412 HW 544 0 0 0 0.417 549 547 OW TIP3 0 9.9393 14.9594 23.6285 OW 548 549 0 0 -0.834 550 548 HW TIP3 0 10.6983 14.9594 24.1325 HW 547 0 0 0 0.417 551 549 HW TIP3 0 10.6983 14.9594 23.1245 HW 547 0 0 0 0.417 552 550 OW TIP3 0 9.9393 14.9594 26.7117 OW 551 552 0 0 -0.834 553 551 HW TIP3 0 10.6983 14.9594 27.2157 HW 550 0 0 0 0.417 554 552 HW TIP3 0 10.6983 14.9594 26.2077 HW 550 0 0 0 0.417 555 553 OW TIP3 0 9.9393 14.9594 29.795 OW 554 555 0 0 -0.834 556 554 HW TIP3 0 10.6983 14.9594 30.299 HW 553 0 0 0 0.417 557 555 HW TIP3 0 10.6983 14.9594 29.291 HW 553 0 0 0 0.417 558 556 OW TIP3 0 9.9393 14.9594 32.8783 OW 557 558 0 0 -0.834 559 557 HW TIP3 0 10.6983 14.9594 33.3823 HW 556 0 0 0 0.417 560 558 HW TIP3 0 10.6983 14.9594 32.3743 HW 556 0 0 0 0.417 561 559 OW TIP3 0 12.7791 1.66216 2.04563 OW 560 561 0 0 -0.834 562 560 HW TIP3 0 13.5381 1.66216 2.54963 HW 559 0 0 0 0.417 563 561 HW TIP3 0 13.5381 1.66216 1.54163 HW 559 0 0 0 0.417 564 562 OW TIP3 0 12.7791 1.66216 5.1289 OW 563 564 0 0 -0.834 565 563 HW TIP3 0 13.5381 1.66216 5.6329 HW 562 0 0 0 0.417 566 564 HW TIP3 0 13.5381 1.66216 4.6249 HW 562 0 0 0 0.417 567 565 OW TIP3 0 12.7791 1.66216 8.21216 OW 566 567 0 0 -0.834 568 566 HW TIP3 0 13.5381 1.66216 8.71616 HW 565 0 0 0 0.417 569 567 HW TIP3 0 13.5381 1.66216 7.70816 HW 565 0 0 0 0.417 570 568 OW TIP3 0 12.7791 1.66216 11.2954 OW 569 570 0 0 -0.834 571 569 HW TIP3 0 13.5381 1.66216 11.7994 HW 568 0 0 0 0.417 572 570 HW TIP3 0 13.5381 1.66216 10.7914 HW 568 0 0 0 0.417 573 571 OW TIP3 0 12.7791 1.66216 14.3787 OW 572 573 0 0 -0.834 574 572 HW TIP3 0 13.5381 1.66216 14.8827 HW 571 0 0 0 0.417 575 573 HW TIP3 0 13.5381 1.66216 13.8747 HW 571 0 0 0 0.417 576 574 OW TIP3 0 12.7791 1.66216 17.4619 OW 575 576 0 0 -0.834 577 575 HW TIP3 0 13.5381 1.66216 17.966 HW 574 0 0 0 0.417 578 576 HW TIP3 0 13.5381 1.66216 16.958 HW 574 0 0 0 0.417 579 577 OW TIP3 0 12.7791 1.66216 20.5452 OW 578 579 0 0 -0.834 580 578 HW TIP3 0 13.5381 1.66216 21.0492 HW 577 0 0 0 0.417 581 579 HW TIP3 0 13.5381 1.66216 20.0412 HW 577 0 0 0 0.417 582 580 OW TIP3 0 12.7791 1.66216 23.6285 OW 581 582 0 0 -0.834 583 581 HW TIP3 0 13.5381 1.66216 24.1325 HW 580 0 0 0 0.417 584 582 HW TIP3 0 13.5381 1.66216 23.1245 HW 580 0 0 0 0.417 585 583 OW TIP3 0 12.7791 1.66216 26.7117 OW 584 585 0 0 -0.834 586 584 HW TIP3 0 13.5381 1.66216 27.2157 HW 583 0 0 0 0.417 587 585 HW TIP3 0 13.5381 1.66216 26.2077 HW 583 0 0 0 0.417 588 586 OW TIP3 0 12.7791 1.66216 29.795 OW 587 588 0 0 -0.834 589 587 HW TIP3 0 13.5381 1.66216 30.299 HW 586 0 0 0 0.417 590 588 HW TIP3 0 13.5381 1.66216 29.291 HW 586 0 0 0 0.417 591 589 OW TIP3 0 12.7791 1.66216 32.8783 OW 590 591 0 0 -0.834 592 590 HW TIP3 0 13.5381 1.66216 33.3823 HW 589 0 0 0 0.417 593 591 HW TIP3 0 13.5381 1.66216 32.3743 HW 589 0 0 0 0.417 594 592 OW TIP3 0 12.7791 4.98648 2.04563 OW 593 594 0 0 -0.834 595 593 HW TIP3 0 13.5381 4.98648 2.54963 HW 592 0 0 0 0.417 596 594 HW TIP3 0 13.5381 4.98648 1.54163 HW 592 0 0 0 0.417 597 595 OW TIP3 0 12.7791 4.98648 5.1289 OW 596 597 0 0 -0.834 598 596 HW TIP3 0 13.5381 4.98648 5.6329 HW 595 0 0 0 0.417 599 597 HW TIP3 0 13.5381 4.98648 4.6249 HW 595 0 0 0 0.417 600 598 OW TIP3 0 12.7791 4.98648 8.21216 OW 599 600 0 0 -0.834 601 599 HW TIP3 0 13.5381 4.98648 8.71616 HW 598 0 0 0 0.417 602 600 HW TIP3 0 13.5381 4.98648 7.70816 HW 598 0 0 0 0.417 603 601 OW TIP3 0 12.7791 4.98648 11.2954 OW 602 603 0 0 -0.834 604 602 HW TIP3 0 13.5381 4.98648 11.7994 HW 601 0 0 0 0.417 605 603 HW TIP3 0 13.5381 4.98648 10.7914 HW 601 0 0 0 0.417 606 604 OW TIP3 0 12.7791 4.98648 14.3787 OW 605 606 0 0 -0.834 607 605 HW TIP3 0 13.5381 4.98648 14.8827 HW 604 0 0 0 0.417 608 606 HW TIP3 0 13.5381 4.98648 13.8747 HW 604 0 0 0 0.417 609 607 OW TIP3 0 12.7791 4.98648 17.4619 OW 608 609 0 0 -0.834 610 608 HW TIP3 0 13.5381 4.98648 17.966 HW 607 0 0 0 0.417 611 609 HW TIP3 0 13.5381 4.98648 16.958 HW 607 0 0 0 0.417 612 610 OW TIP3 0 12.7791 4.98648 20.5452 OW 611 612 0 0 -0.834 613 611 HW TIP3 0 13.5381 4.98648 21.0492 HW 610 0 0 0 0.417 614 612 HW TIP3 0 13.5381 4.98648 20.0412 HW 610 0 0 0 0.417 615 613 OW TIP3 0 12.7791 4.98648 23.6285 OW 614 615 0 0 -0.834 616 614 HW TIP3 0 13.5381 4.98648 24.1325 HW 613 0 0 0 0.417 617 615 HW TIP3 0 13.5381 4.98648 23.1245 HW 613 0 0 0 0.417 618 616 OW TIP3 0 12.7791 4.98648 26.7117 OW 617 618 0 0 -0.834 619 617 HW TIP3 0 13.5381 4.98648 27.2157 HW 616 0 0 0 0.417 620 618 HW TIP3 0 13.5381 4.98648 26.2077 HW 616 0 0 0 0.417 621 619 OW TIP3 0 12.7791 4.98648 29.795 OW 620 621 0 0 -0.834 622 620 HW TIP3 0 13.5381 4.98648 30.299 HW 619 0 0 0 0.417 623 621 HW TIP3 0 13.5381 4.98648 29.291 HW 619 0 0 0 0.417 624 622 OW TIP3 0 12.7791 4.98648 32.8783 OW 623 624 0 0 -0.834 625 623 HW TIP3 0 13.5381 4.98648 33.3823 HW 622 0 0 0 0.417 626 624 HW TIP3 0 13.5381 4.98648 32.3743 HW 622 0 0 0 0.417 627 625 OW TIP3 0 12.7791 8.3108 2.04563 OW 626 627 0 0 -0.834 628 626 HW TIP3 0 13.5381 8.3108 2.54963 HW 625 0 0 0 0.417 629 627 HW TIP3 0 13.5381 8.3108 1.54163 HW 625 0 0 0 0.417 630 628 OW TIP3 0 12.7791 8.3108 5.1289 OW 629 630 0 0 -0.834 631 629 HW TIP3 0 13.5381 8.3108 5.6329 HW 628 0 0 0 0.417 632 630 HW TIP3 0 13.5381 8.3108 4.6249 HW 628 0 0 0 0.417 633 631 OW TIP3 0 12.7791 8.3108 8.21216 OW 632 633 0 0 -0.834 634 632 HW TIP3 0 13.5381 8.3108 8.71616 HW 631 0 0 0 0.417 635 633 HW TIP3 0 13.5381 8.3108 7.70816 HW 631 0 0 0 0.417 636 634 OW TIP3 0 12.7791 8.3108 11.2954 OW 635 636 0 0 -0.834 637 635 HW TIP3 0 13.5381 8.3108 11.7994 HW 634 0 0 0 0.417 638 636 HW TIP3 0 13.5381 8.3108 10.7914 HW 634 0 0 0 0.417 639 637 OW TIP3 0 12.7791 8.3108 14.3787 OW 638 639 0 0 -0.834 640 638 HW TIP3 0 13.5381 8.3108 14.8827 HW 637 0 0 0 0.417 641 639 HW TIP3 0 13.5381 8.3108 13.8747 HW 637 0 0 0 0.417 642 640 OW TIP3 0 12.7791 8.3108 17.4619 OW 641 642 0 0 -0.834 643 641 HW TIP3 0 13.5381 8.3108 17.966 HW 640 0 0 0 0.417 644 642 HW TIP3 0 13.5381 8.3108 16.958 HW 640 0 0 0 0.417 645 643 OW TIP3 0 12.7791 8.3108 20.5452 OW 644 645 0 0 -0.834 646 644 HW TIP3 0 13.5381 8.3108 21.0492 HW 643 0 0 0 0.417 647 645 HW TIP3 0 13.5381 8.3108 20.0412 HW 643 0 0 0 0.417 648 646 OW TIP3 0 12.7791 8.3108 23.6285 OW 647 648 0 0 -0.834 649 647 HW TIP3 0 13.5381 8.3108 24.1325 HW 646 0 0 0 0.417 650 648 HW TIP3 0 13.5381 8.3108 23.1245 HW 646 0 0 0 0.417 651 649 OW TIP3 0 12.7791 8.3108 26.7117 OW 650 651 0 0 -0.834 652 650 HW TIP3 0 13.5381 8.3108 27.2157 HW 649 0 0 0 0.417 653 651 HW TIP3 0 13.5381 8.3108 26.2077 HW 649 0 0 0 0.417 654 652 OW TIP3 0 12.7791 8.3108 29.795 OW 653 654 0 0 -0.834 655 653 HW TIP3 0 13.5381 8.3108 30.299 HW 652 0 0 0 0.417 656 654 HW TIP3 0 13.5381 8.3108 29.291 HW 652 0 0 0 0.417 657 655 OW TIP3 0 12.7791 8.3108 32.8783 OW 656 657 0 0 -0.834 658 656 HW TIP3 0 13.5381 8.3108 33.3823 HW 655 0 0 0 0.417 659 657 HW TIP3 0 13.5381 8.3108 32.3743 HW 655 0 0 0 0.417 660 658 OW TIP3 0 12.7791 11.6351 2.04563 OW 659 660 0 0 -0.834 661 659 HW TIP3 0 13.5381 11.6351 2.54963 HW 658 0 0 0 0.417 662 660 HW TIP3 0 13.5381 11.6351 1.54163 HW 658 0 0 0 0.417 663 661 OW TIP3 0 12.7791 11.6351 5.1289 OW 662 663 0 0 -0.834 664 662 HW TIP3 0 13.5381 11.6351 5.6329 HW 661 0 0 0 0.417 665 663 HW TIP3 0 13.5381 11.6351 4.6249 HW 661 0 0 0 0.417 666 664 OW TIP3 0 12.7791 11.6351 8.21216 OW 665 666 0 0 -0.834 667 665 HW TIP3 0 13.5381 11.6351 8.71616 HW 664 0 0 0 0.417 668 666 HW TIP3 0 13.5381 11.6351 7.70816 HW 664 0 0 0 0.417 669 667 OW TIP3 0 12.7791 11.6351 11.2954 OW 668 669 0 0 -0.834 670 668 HW TIP3 0 13.5381 11.6351 11.7994 HW 667 0 0 0 0.417 671 669 HW TIP3 0 13.5381 11.6351 10.7914 HW 667 0 0 0 0.417 672 670 OW TIP3 0 12.7791 11.6351 14.3787 OW 671 672 0 0 -0.834 673 671 HW TIP3 0 13.5381 11.6351 14.8827 HW 670 0 0 0 0.417 674 672 HW TIP3 0 13.5381 11.6351 13.8747 HW 670 0 0 0 0.417 675 673 OW TIP3 0 12.7791 11.6351 17.4619 OW 674 675 0 0 -0.834 676 674 HW TIP3 0 13.5381 11.6351 17.966 HW 673 0 0 0 0.417 677 675 HW TIP3 0 13.5381 11.6351 16.958 HW 673 0 0 0 0.417 678 676 OW TIP3 0 12.7791 11.6351 20.5452 OW 677 678 0 0 -0.834 679 677 HW TIP3 0 13.5381 11.6351 21.0492 HW 676 0 0 0 0.417 680 678 HW TIP3 0 13.5381 11.6351 20.0412 HW 676 0 0 0 0.417 681 679 OW TIP3 0 12.7791 11.6351 23.6285 OW 680 681 0 0 -0.834 682 680 HW TIP3 0 13.5381 11.6351 24.1325 HW 679 0 0 0 0.417 683 681 HW TIP3 0 13.5381 11.6351 23.1245 HW 679 0 0 0 0.417 684 682 OW TIP3 0 12.7791 11.6351 26.7117 OW 683 684 0 0 -0.834 685 683 HW TIP3 0 13.5381 11.6351 27.2157 HW 682 0 0 0 0.417 686 684 HW TIP3 0 13.5381 11.6351 26.2077 HW 682 0 0 0 0.417 687 685 OW TIP3 0 12.7791 11.6351 29.795 OW 686 687 0 0 -0.834 688 686 HW TIP3 0 13.5381 11.6351 30.299 HW 685 0 0 0 0.417 689 687 HW TIP3 0 13.5381 11.6351 29.291 HW 685 0 0 0 0.417 690 688 OW TIP3 0 12.7791 11.6351 32.8783 OW 689 690 0 0 -0.834 691 689 HW TIP3 0 13.5381 11.6351 33.3823 HW 688 0 0 0 0.417 692 690 HW TIP3 0 13.5381 11.6351 32.3743 HW 688 0 0 0 0.417 693 691 OW TIP3 0 12.7791 14.9594 2.04563 OW 692 693 0 0 -0.834 694 692 HW TIP3 0 13.5381 14.9594 2.54963 HW 691 0 0 0 0.417 695 693 HW TIP3 0 13.5381 14.9594 1.54163 HW 691 0 0 0 0.417 696 694 OW TIP3 0 12.7791 14.9594 5.1289 OW 695 696 0 0 -0.834 697 695 HW TIP3 0 13.5381 14.9594 5.6329 HW 694 0 0 0 0.417 698 696 HW TIP3 0 13.5381 14.9594 4.6249 HW 694 0 0 0 0.417 699 697 OW TIP3 0 12.7791 14.9594 8.21216 OW 698 699 0 0 -0.834 700 698 HW TIP3 0 13.5381 14.9594 8.71616 HW 697 0 0 0 0.417 701 699 HW TIP3 0 13.5381 14.9594 7.70816 HW 697 0 0 0 0.417 702 700 OW TIP3 0 12.7791 14.9594 11.2954 OW 701 702 0 0 -0.834 703 701 HW TIP3 0 13.5381 14.9594 11.7994 HW 700 0 0 0 0.417 704 702 HW TIP3 0 13.5381 14.9594 10.7914 HW 700 0 0 0 0.417 705 703 OW TIP3 0 12.7791 14.9594 14.3787 OW 704 705 0 0 -0.834 706 704 HW TIP3 0 13.5381 14.9594 14.8827 HW 703 0 0 0 0.417 707 705 HW TIP3 0 13.5381 14.9594 13.8747 HW 703 0 0 0 0.417 708 706 OW TIP3 0 12.7791 14.9594 17.4619 OW 707 708 0 0 -0.834 709 707 HW TIP3 0 13.5381 14.9594 17.966 HW 706 0 0 0 0.417 710 708 HW TIP3 0 13.5381 14.9594 16.958 HW 706 0 0 0 0.417 711 709 OW TIP3 0 12.7791 14.9594 20.5452 OW 710 711 0 0 -0.834 712 710 HW TIP3 0 13.5381 14.9594 21.0492 HW 709 0 0 0 0.417 713 711 HW TIP3 0 13.5381 14.9594 20.0412 HW 709 0 0 0 0.417 714 712 OW TIP3 0 12.7791 14.9594 23.6285 OW 713 714 0 0 -0.834 715 713 HW TIP3 0 13.5381 14.9594 24.1325 HW 712 0 0 0 0.417 716 714 HW TIP3 0 13.5381 14.9594 23.1245 HW 712 0 0 0 0.417 717 715 OW TIP3 0 12.7791 14.9594 26.7117 OW 716 717 0 0 -0.834 718 716 HW TIP3 0 13.5381 14.9594 27.2157 HW 715 0 0 0 0.417 719 717 HW TIP3 0 13.5381 14.9594 26.2077 HW 715 0 0 0 0.417 720 718 OW TIP3 0 12.7791 14.9594 29.795 OW 719 720 0 0 -0.834 721 719 HW TIP3 0 13.5381 14.9594 30.299 HW 718 0 0 0 0.417 722 720 HW TIP3 0 13.5381 14.9594 29.291 HW 718 0 0 0 0.417 723 721 OW TIP3 0 12.7791 14.9594 32.8783 OW 722 723 0 0 -0.834 724 722 HW TIP3 0 13.5381 14.9594 33.3823 HW 721 0 0 0 0.417 725 723 HW TIP3 0 13.5381 14.9594 32.3743 HW 721 0 0 0 0.417 -
tests/regression/Filling/testsuite-filling.at
r8859b5 r7f1b51 18 18 AT_BANNER([MoleCuilder - Filling in molecules]) 19 19 20 # filling box21 m4_include(Filling/FillWithMolecule/testsuite-fill-with-molecule.at)22 23 20 # suspend in water with certain density 24 21 m4_include(Filling/SuspendInWater/testsuite-suspend-in-water.at) 25 22 26 # filling box 27 m4_include(Filling/FillVoidWithMolecule/testsuite-fill-void-with-molecule.at) 28 29 # filling box with tenside 30 m4_include(Filling/FillVoidWithMolecule/testsuite-fill-void-with-tenside-molecule.at) 23 # fill surface 24 m4_include([Filling/FillSurface/testsuite-fill-surface-cube.at]) 25 m4_include([Filling/FillSurface/testsuite-fill-surface-cylinder.at]) 26 m4_include([Filling/FillSurface/testsuite-fill-surface-everywhere.at]) 27 m4_include([Filling/FillSurface/testsuite-fill-surface-nowhere.at]) 28 m4_include([Filling/FillSurface/testsuite-fill-surface-sphere.at]) 31 29 32 30 # create micelle by filling a spherical surface 33 m4_include([Filling/ SphericalSurface/testsuite-molecules-fill-spherical-surface.at])31 m4_include([Filling/FillSurface/testsuite-fill-surface-micelle.at]) 34 32 35 33 # fill regular grid 36 m4_include([Filling/RegularGrid/testsuite- molecules-fill-regular-grid.at])37 m4_include([Filling/RegularGrid/testsuite- molecules-fill-regular-grid-with-surface.at])34 m4_include([Filling/RegularGrid/testsuite-fill-regular-grid.at]) 35 m4_include([Filling/RegularGrid/testsuite-fill-regular-grid-with-surface.at]) 38 36 37 # filling shape's volumes 38 m4_include(Filling/FillVolume/testsuite-fill-volume-cube.at) 39 m4_include(Filling/FillVolume/testsuite-fill-volume-cylinder.at) 40 m4_include(Filling/FillVolume/testsuite-fill-volume-everywhere.at) 41 m4_include(Filling/FillVolume/testsuite-fill-volume-nowhere.at) 42 m4_include(Filling/FillVolume/testsuite-fill-volume-sphere.at) 43 -
tests/regression/Makefile.am
r8859b5 r7f1b51 63 63 $(srcdir)/Domain/SetBoundaryConditions/testsuite-domain-set-boundary-conditions.at \ 64 64 $(srcdir)/Filling/testsuite-filling.at \ 65 $(srcdir)/Filling/FillVoidWithMolecule/testsuite-fill-void-with-molecule.at \ 66 $(srcdir)/Filling/FillVoidWithMolecule/testsuite-fill-void-with-tenside-molecule.at \ 67 $(srcdir)/Filling/FillWithMolecule/testsuite-fill-with-molecule.at \ 68 $(srcdir)/Filling/RegularGrid/testsuite-molecules-fill-regular-grid.at \ 69 $(srcdir)/Filling/RegularGrid/testsuite-molecules-fill-regular-grid-with-surface.at \ 70 $(srcdir)/Filling/SphericalSurface/testsuite-molecules-fill-spherical-surface.at \ 65 $(srcdir)/Filling/FillSurface/testsuite-fill-surface-cube.at \ 66 $(srcdir)/Filling/FillSurface/testsuite-fill-surface-cylinder.at \ 67 $(srcdir)/Filling/FillSurface/testsuite-fill-surface-everywhere.at \ 68 $(srcdir)/Filling/FillSurface/testsuite-fill-surface-micelle.at \ 69 $(srcdir)/Filling/FillSurface/testsuite-fill-surface-nowhere.at \ 70 $(srcdir)/Filling/FillSurface/testsuite-fill-surface-sphere.at \ 71 $(srcdir)/Filling/FillVolume/testsuite-fill-volume-cube.at \ 72 $(srcdir)/Filling/FillVolume/testsuite-fill-volume-cylinder.at \ 73 $(srcdir)/Filling/FillVolume/testsuite-fill-volume-everywhere.at \ 74 $(srcdir)/Filling/FillVolume/testsuite-fill-volume-nowhere.at \ 75 $(srcdir)/Filling/FillVolume/testsuite-fill-volume-sphere.at \ 76 $(srcdir)/Filling/RegularGrid/testsuite-fill-regular-grid.at \ 77 $(srcdir)/Filling/RegularGrid/testsuite-fill-regular-grid-with-surface.at \ 71 78 $(srcdir)/Filling/SuspendInWater/testsuite-suspend-in-water.at \ 72 79 $(srcdir)/Fragmentation/testsuite-fragmentation.at \ -
tests/regression/Options/InvalidCommands/testsuite-options-invalid-commands.at
r8859b5 r7f1b51 25 25 AT_CHECK([chmod u+w $file], 0) 26 26 AT_CHECK([../../molecuilder -i $file -t], 134, [ignore], [stderr]) 27 AT_CHECK([../../molecuilder -i $file -s -b -E -c -b -a -u], 134, [ignore], [stderr]) 28 AT_CHECK([../../molecuilder -i $file -b -E -c -b -a -u], 134, [ignore], [stderr]) 29 AT_CHECK([../../molecuilder -i $file -E -c -b -a -u], 134, [ignore], [stderr]) 30 AT_CHECK([../../molecuilder -i $file -c -b -a -u], 134, [ignore], [stderr]) 31 AT_CHECK([../../molecuilder -i $file -b -a -u], 134, [ignore], [stderr]) 32 AT_CHECK([../../molecuilder -i $file -a -u], 134, [ignore], [stderr]) 33 AT_CHECK([../../molecuilder -i $file -u], 134, [ignore], [stderr]) 27 AT_CHECK([../../molecuilder -i $file -s -b -E -c -b -a], 134, [ignore], [stderr]) 28 AT_CHECK([../../molecuilder -i $file -b -E -c -b -a], 134, [ignore], [stderr]) 29 AT_CHECK([../../molecuilder -i $file -E -c -b -a], 134, [ignore], [stderr]) 30 AT_CHECK([../../molecuilder -i $file -c -b -a], 134, [ignore], [stderr]) 31 AT_CHECK([../../molecuilder -i $file -b -a], 134, [ignore], [stderr]) 32 AT_CHECK([../../molecuilder -i $file -a], 134, [ignore], [stderr]) 34 33 35 34 AT_CLEANUP -
tests/regression/RandomNumbers/Distribution/testsuite-set-random-number-distribution.at
r8859b5 r7f1b51 22 22 23 23 AT_CHECK([../../molecuilder -v 3 --set-random-number-distribution "uniform_int" --random-number-distribution-parameters "max=20;"], 0, [stdout], [stderr]) 24 AT_CHECK([ fgrep "uniform_int" stdout], 0, [ignore], [ignore])24 AT_CHECK([grep "STATUS:.*uniform_int" stdout], 0, [ignore], [ignore]) 25 25 AT_CHECK([fgrep "Its parameters are: min=0;max=20;p=-1;t=-1;median=-1;sigma=-1;alpha=-1;mean=-1;a=-1;b=-1;c=-1;lambda=-1;" stdout], 0, [ignore], [ignore]) 26 26 … … 32 32 33 33 AT_CHECK([../../molecuilder -v 3 --set-random-number-distribution "uniform_int" --random-number-distribution-parameters "max=20;" --undo], 0, [stdout], [stderr]) 34 AT_CHECK([ fgrep "uniform_smallint" stdout], 0, [ignore], [ignore])34 AT_CHECK([grep "STATUS:.*uniform_smallint" stdout], 0, [ignore], [ignore]) 35 35 AT_CHECK([fgrep "Its parameters are: min=0;max=9;p=-1;t=-1;median=-1;sigma=-1;alpha=-1;mean=-1;a=-1;b=-1;c=-1;lambda=-1;" stdout], 0, [ignore], [ignore]) 36 36 … … 42 42 43 43 AT_CHECK([../../molecuilder -v 3 --set-random-number-distribution "uniform_int" --random-number-distribution-parameters "max=20;" --undo --redo], 0, [stdout], [stderr]) 44 AT_CHECK([ fgrep -c "uniform_int" stdout], 0, [stdout], [ignore])45 AT_CHECK([fgrep " 3" stdout], 0, [ignore], [ignore])44 AT_CHECK([grep -c "STATUS:.*uniform_int" stdout], 0, [stdout], [ignore]) 45 AT_CHECK([fgrep "2" stdout], 0, [ignore], [ignore]) 46 46 AT_CHECK([../../molecuilder -v 3 --set-random-number-distribution "uniform_int" --random-number-distribution-parameters "max=20;" --undo --redo], 0, [stdout], [stderr]) 47 47 AT_CHECK([fgrep -c "Its parameters are: min=0;max=20;p=-1;t=-1;median=-1;sigma=-1;alpha=-1;mean=-1;a=-1;b=-1;c=-1;lambda=-1;" stdout], 0, [stdout], [ignore]) -
tests/regression/RandomNumbers/Engine/testsuite-set-random-number-engine.at
r8859b5 r7f1b51 22 22 23 23 AT_CHECK([../../molecuilder -v 3 --set-random-number-engine "lagged_fibonacci607" --random-number-engine-parameters "seed=2;"], 0, [stdout], [stderr]) 24 AT_CHECK([ fgrep "lagged_fibonacci607" stdout], 0, [ignore], [ignore])24 AT_CHECK([grep "STATUS:.*lagged_fibonacci607" stdout], 0, [ignore], [ignore]) 25 25 AT_CHECK([fgrep "Its parameters are: seed=2;" stdout], 0, [ignore], [ignore]) 26 26 … … 32 32 33 33 AT_CHECK([../../molecuilder -v 3 --set-random-number-engine "lagged_fibonacci607" --random-number-engine-parameters "seed=2;" --undo], 0, [stdout], [stderr]) 34 AT_CHECK([ fgrep "minstd_rand0" stdout], 0, [ignore], [ignore])34 AT_CHECK([grep "STATUS:.*minstd_rand0" stdout], 0, [ignore], [ignore]) 35 35 AT_CHECK([fgrep "Its parameters are: seed=1;" stdout], 0, [ignore], [ignore]) 36 36 … … 42 42 43 43 AT_CHECK([../../molecuilder -v 3 --set-random-number-engine "lagged_fibonacci607" --random-number-engine-parameters "seed=2;" --undo --redo], 0, [stdout], [stderr]) 44 AT_CHECK([ fgrep -c "lagged_fibonacci607" stdout], 0, [stdout], [ignore])45 AT_CHECK([fgrep " 3" stdout], 0, [stdout], [ignore])44 AT_CHECK([grep -c "STATUS:.*lagged_fibonacci607" stdout], 0, [stdout], [ignore]) 45 AT_CHECK([fgrep "2" stdout], 0, [stdout], [ignore]) 46 46 AT_CHECK([../../molecuilder -v 3 --set-random-number-engine "lagged_fibonacci607" --random-number-engine-parameters "seed=2;" --undo --redo], 0, [stdout], [stderr]) 47 47 AT_CHECK([fgrep -c "Its parameters are: seed=2;" stdout], 0, [stdout], [ignore])
Note:
See TracChangeset
for help on using the changeset viewer.