MDStressLab++
Configuration.cpp
Go to the documentation of this file.
1 /*
2  * Configuration.cpp
3  *
4  * Created on: Nov 25, 2019
5  * Author: Nikhil
6  */
7 
8 #include "Configuration.h"
9 #include <iostream>
10 
11 Configuration::Configuration(int numberOfParticles, int referenceAndFinal): numberOfParticles(numberOfParticles)
12 {
13  assert(numberOfParticles>=0);
14  // Set all particles as non-contributing by default
15  coordinates[Current]= MatrixXd::Zero(numberOfParticles,DIM);
16  coordinates[Reference]= MatrixXd::Zero(0,0);
17  if(referenceAndFinal) coordinates[Reference].resize(numberOfParticles,DIM);
18  velocities.resize(numberOfParticles,DIM);
19  species.reserve(numberOfParticles);
20 }
21 
22 Configuration* Configuration::getLocalConfiguration(const std::set<int>& localParticleList) const
23 {
24  // Ensure the local particle list is within the range
25  assert( std::all_of(localParticleList.cbegin(),
26  localParticleList.cend(),
27  [this](int particle){return (particle >= 0 && particle <= numberOfParticles); }) &&
28  "Local particle list is out of range");
29 
30  int referenceAndFinal= (coordinates.at(Reference).rows()>0);
31  int localNumberOfParticles= localParticleList.size();
32  std::cout << "Creating a local configuration of size = " << localNumberOfParticles << std::endl;
33  Configuration* plocalConfiguration= new Configuration{localNumberOfParticles,referenceAndFinal};
34 
35  int i_localParticle=0;
36  for(const auto& localParticle : localParticleList)
37  {
38  plocalConfiguration->coordinates.at(Current).row(i_localParticle)= coordinates.at(Current).row(localParticle);
39  if (referenceAndFinal) plocalConfiguration->coordinates.at(Reference).row(i_localParticle)= coordinates.at(Reference).row(localParticle);
40  plocalConfiguration->velocities.row(i_localParticle)= velocities.row(localParticle);
41  plocalConfiguration->species.push_back(species[localParticle]);
42  i_localParticle++;
43  }
44  std::cout << "Local configuration creation successful" << std::endl;
45  return plocalConfiguration;
46 }
47 
49  // TODO Auto-generated destructor stub
50 }
51 
52 
53 
54 
Configuration(int, int)
std::map< ConfigType, MatrixXd > coordinates
Definition: Configuration.h:24
Configuration * getLocalConfiguration(const std::set< int > &localParticleList) const
MatrixXd velocities
Definition: Configuration.h:25
std::vector< std::string > species
Definition: Configuration.h:23
virtual ~Configuration()
const int DIM
Definition: typedef.h:51