MDStressLab++
Loading...
Searching...
No Matches
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
11Configuration::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);
20}
21
22Configuration* 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
Represents atomic configuration data including coordinates, velocities, and species.
virtual ~Configuration()
std::vector< std::string > species
Species names for each particle (size equals numberOfParticles).
MatrixXd velocities
Velocities of particles.
int numberOfParticles
Total number of particles in the configuration.
Configuration(int, int)
Constructs a Configuration object.
Configuration * getLocalConfiguration(const std::set< int > &localParticleList) const
can be deleted
std::map< ConfigType, MatrixXd > coordinates
Map from configuration type (Reference or Current) to coordinate matrices.
#define DIM
@ Current
Definition typedef.h:70
@ Reference
Definition typedef.h:69