Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/moleculelist.cpp

    r389cc8 rc27778  
    55 */
    66
    7 #ifdef HAVE_CONFIG_H
    8 #include <config.h>
    9 #endif
    10 
    117#include "Helpers/MemDebug.hpp"
    128
    139#include <cstring>
    14 
    15 #include <gsl/gsl_inline.h>
    16 #include <gsl/gsl_heapsort.h>
    1710
    1811#include "World.hpp"
     
    2619#include "linkedcell.hpp"
    2720#include "lists.hpp"
    28 #include "verbose.hpp"
    2921#include "log.hpp"
    3022#include "molecule.hpp"
     23#include "memoryallocator.hpp"
    3124#include "periodentafel.hpp"
    3225#include "Helpers/Assert.hpp"
    33 #include "Matrix.hpp"
    34 #include "Box.hpp"
    35 #include "stackclass.hpp"
    3626
    3727#include "Helpers/Assert.hpp"
     
    597587      periodentafel::const_iterator elemIter;
    598588      for(elemIter=periode->begin();elemIter!=periode->end();++elemIter){
    599         if ((*ListRunner)->hasElement((*elemIter).first)) { // if this element got atoms
     589        if ((*ListRunner)->ElementsInMolecule[(*elemIter).first]) { // if this element got atoms
    600590          for(molecule::iterator atomIter = (*ListRunner)->begin(); atomIter !=(*ListRunner)->end();++atomIter){
    601591            if ((*atomIter)->type->getNumber() == (*elemIter).first) {
     
    641631  int FragmentCounter = 0;
    642632  ofstream output;
    643   Matrix cell_size = World::getInstance().getDomain().getM();
    644   Matrix cell_size_backup = cell_size;
    645 
     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];
    646639  // store the fragments as config and as xyz
    647640  for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) {
     
    681674    (*ListRunner)->CenterEdge(&BoxDimension);
    682675    (*ListRunner)->SetBoxDimension(&BoxDimension); // update Box of atoms by boundary
     676    int j = -1;
    683677    for (int k = 0; k < NDIM; k++) {
     678      j += k + 1;
    684679      BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem);
    685       cell_size.at(k,k) = BoxDimension[k] * 2.;
    686     }
    687     World::getInstance().setDomain(cell_size);
     680      cell_size[j] = BoxDimension[k] * 2.;
     681    }
    688682    (*ListRunner)->Translate(&BoxDimension);
    689683
    690684    // also calculate necessary orbitals
     685    (*ListRunner)->CountElements(); // this is a bugfix, atoms should shoulds actually be added correctly to this fragment
    691686    //(*ListRunner)->CalculateOrbitals(*World::getInstance().getConfig);
    692687
     
    730725
    731726  // restore cell_size
    732   World::getInstance().setDomain(cell_size_backup);
     727  for (int i=0;i<6;i++)
     728    cell_size[i] = cell_size_backup[i];
    733729
    734730  return result;
     
    891887  // center at set box dimensions
    892888  mol->CenterEdge(&center);
    893   Matrix domain;
    894   for(int i =0;i<NDIM;++i)
    895     domain.at(i,i) = center[i];
    896   World::getInstance().setDomain(domain);
     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];
    897895  insert(mol);
    898896}
Note: See TracChangeset for help on using the changeset viewer.