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);
19 velocities.setZero();
21 masses.setZero();
23}
24
25Configuration* Configuration::getLocalConfiguration(const std::set<int>& localParticleList) const
26{
27 // Ensure the local particle list is within the range
28 assert( std::all_of(localParticleList.cbegin(),
29 localParticleList.cend(),
30 [this](int particle){return (particle >= 0 && particle <= numberOfParticles); }) &&
31 "Local particle list is out of range");
32
33 int referenceAndFinal= (coordinates.at(Reference).rows()>0);
34 int localNumberOfParticles= localParticleList.size();
35 std::cout << "Creating a local configuration of size = " << localNumberOfParticles << std::endl;
36 Configuration* plocalConfiguration= new Configuration{localNumberOfParticles,referenceAndFinal};
37
38 int i_localParticle=0;
39 for(const auto& localParticle : localParticleList)
40 {
41 plocalConfiguration->coordinates.at(Current).row(i_localParticle)= coordinates.at(Current).row(localParticle);
42 if (referenceAndFinal) plocalConfiguration->coordinates.at(Reference).row(i_localParticle)= coordinates.at(Reference).row(localParticle);
43 plocalConfiguration->velocities.row(i_localParticle)= velocities.row(localParticle);
44 plocalConfiguration->masses(i_localParticle)= masses(localParticle);
45 plocalConfiguration->species.push_back(species[localParticle]);
46 i_localParticle++;
47 }
48 std::cout << "Local configuration creation successful" << std::endl;
49 return plocalConfiguration;
50}
51
53 // TODO Auto-generated destructor stub
54}
55
Represents atomic configuration data including coordinates, velocities, species, and masses.
virtual ~Configuration()
VectorXd masses
Mass of each particle.
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