Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/moleculelist.cpp

    rc27778 r389cc8  
    55 */
    66
     7#ifdef HAVE_CONFIG_H
     8#include <config.h>
     9#endif
     10
    711#include "Helpers/MemDebug.hpp"
    812
    913#include <cstring>
     14
     15#include <gsl/gsl_inline.h>
     16#include <gsl/gsl_heapsort.h>
    1017
    1118#include "World.hpp"
     
    1926#include "linkedcell.hpp"
    2027#include "lists.hpp"
     28#include "verbose.hpp"
    2129#include "log.hpp"
    2230#include "molecule.hpp"
    23 #include "memoryallocator.hpp"
    2431#include "periodentafel.hpp"
    2532#include "Helpers/Assert.hpp"
     33#include "Matrix.hpp"
     34#include "Box.hpp"
     35#include "stackclass.hpp"
    2636
    2737#include "Helpers/Assert.hpp"
     
    587597      periodentafel::const_iterator elemIter;
    588598      for(elemIter=periode->begin();elemIter!=periode->end();++elemIter){
    589         if ((*ListRunner)->ElementsInMolecule[(*elemIter).first]) { // if this element got atoms
     599        if ((*ListRunner)->hasElement((*elemIter).first)) { // if this element got atoms
    590600          for(molecule::iterator atomIter = (*ListRunner)->begin(); atomIter !=(*ListRunner)->end();++atomIter){
    591601            if ((*atomIter)->type->getNumber() == (*elemIter).first) {
     
    631641  int FragmentCounter = 0;
    632642  ofstream output;
    633   double cell_size_backup[6];
    634   double * const cell_size = World::getInstance().getDomain();
    635 
    636   // backup cell_size
    637   for (int i=0;i<6;i++)
    638     cell_size_backup[i] = cell_size[i];
     643  Matrix cell_size = World::getInstance().getDomain().getM();
     644  Matrix cell_size_backup = cell_size;
     645
    639646  // store the fragments as config and as xyz
    640647  for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) {
     
    674681    (*ListRunner)->CenterEdge(&BoxDimension);
    675682    (*ListRunner)->SetBoxDimension(&BoxDimension); // update Box of atoms by boundary
    676     int j = -1;
    677683    for (int k = 0; k < NDIM; k++) {
    678       j += k + 1;
    679684      BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem);
    680       cell_size[j] = BoxDimension[k] * 2.;
    681     }
     685      cell_size.at(k,k) = BoxDimension[k] * 2.;
     686    }
     687    World::getInstance().setDomain(cell_size);
    682688    (*ListRunner)->Translate(&BoxDimension);
    683689
    684690    // also calculate necessary orbitals
    685     (*ListRunner)->CountElements(); // this is a bugfix, atoms should shoulds actually be added correctly to this fragment
    686691    //(*ListRunner)->CalculateOrbitals(*World::getInstance().getConfig);
    687692
     
    725730
    726731  // restore cell_size
    727   for (int i=0;i<6;i++)
    728     cell_size[i] = cell_size_backup[i];
     732  World::getInstance().setDomain(cell_size_backup);
    729733
    730734  return result;
     
    887891  // center at set box dimensions
    888892  mol->CenterEdge(&center);
    889   World::getInstance().getDomain()[0] = center[0];
    890   World::getInstance().getDomain()[1] = 0;
    891   World::getInstance().getDomain()[2] = center[1];
    892   World::getInstance().getDomain()[3] = 0;
    893   World::getInstance().getDomain()[4] = 0;
    894   World::getInstance().getDomain()[5] = center[2];
     893  Matrix domain;
     894  for(int i =0;i<NDIM;++i)
     895    domain.at(i,i) = center[i];
     896  World::getInstance().setDomain(domain);
    895897  insert(mol);
    896898}
Note: See TracChangeset for help on using the changeset viewer.