34 #include <unordered_map>
37 #include <unordered_set>
38 #include <unordered_map>
62 PredefinedReaction(
const int &atom1_type_in ,
const int &atom2_type_in ,
const int &bond_type_in ,
const double &rate_in );
63 PredefinedReaction(
const int &atom1_type_in ,
const int &atom2_type_in ,
const int &bond_type_in ,
const double &rate_in ,
const std::vector< int > &catalyzing_types_in );
76 void setSqrLimits(
const double &length_equil_in ,
const double &length_perc_in );
79 const bool &
isForm( )
const;
102 PredefinedBondForm(
const int &atom1_type_in ,
const int &atom2_type_in ,
const int &bond_type_in ,
const double &rate_in ,
const double &bond_dist_sqr_in ,
const int &delete_atoms_in ,
const int &lone_candidates_in ,
const bool &same_mol_in );
103 PredefinedBondForm(
const int &atom1_type_in ,
const int &atom2_type_in ,
const int &bond_type_in ,
const double &rate_in ,
const double &bond_dist_sqr_in ,
const int &delete_atoms_in ,
const int &lone_candidates_in ,
const bool &same_mol_in ,
const std::vector< int > &catalyzing_types_in );
110 const int &
isLone( )
const;
127 PredefinedDiffusionHop(
const int &parent_type_in ,
const double &insertion_vel_in ,
const double &diffusion_dist_in ,
const double &rate_in ,
const std::string &custom_style_in ,
const std::vector< int > &style_atomtypes_in );
128 PredefinedDiffusionHop(
const int &parent_type_in ,
const double &insertion_vel_in ,
const double &diffusion_dist_in ,
const double &rate_in ,
const std::string &custom_style_in ,
const std::vector< int > &style_atomtypes_in ,
const int &diffused_type_in ,
const bool &is_displacive_in );
137 const double &
getRate( )
const;
159 PredefinedDeposition( LAMMPS_NS::LAMMPS *lmp ,
const int &parent_type_in ,
const double &rate_in ,
const double &depo_offset_in ,
const double &insertion_vel_in ,
const std::string &adsorbate_name_in );
160 PredefinedDeposition( LAMMPS_NS::LAMMPS *lmp ,
const int &parent_type_in ,
const double &rate_in ,
const double &depo_offset_in ,
const double &insertion_vel_in ,
const std::string &adsorbate_name_in ,
const double &sticking_coeff_in );
165 const double &
getRate( )
const;
216 const double &
getRate( )
const;
Class storing settings and global variables for the PAPRECA run.
Definition: papreca_config.h:51
class associated with deposition events. This is a Predefined template for PAPRECA::Deposition events...
Definition: event_list.h:153
const bool & hasVariableStickingCoeff() const
Definition: event_list.cpp:124
double depo_offset
the molecule/particle is placed at a distance of depo_offset above the parent candidate atom.
Definition: event_list.h:188
void setStickingCoeff(const double &sticking_coeff_in)
Definition: event_list.cpp:125
int * atom_types
Template molecule types from lammps. This is an int[mol_natoms] array.
Definition: event_list.h:198
double rate
Definition: event_list.h:187
PredefinedDeposition(LAMMPS_NS::LAMMPS *lmp, const int &parent_type_in, const double &rate_in, const double &depo_offset_in, const double &insertion_vel_in, const std::string &adsorbate_name_in)
Definition: event_list.cpp:100
void incrementDepositionSites()
Definition: event_list.cpp:130
const int & getParentType() const
Definition: event_list.cpp:120
const int & getAtomsNum() const
Definition: event_list.cpp:138
void resetDepositionSites()
Definition: event_list.cpp:132
const int & getDepositionTries() const
Definition: event_list.cpp:128
std::string adsorbate_name
name of adsorbate. This has to be identical to the adsorbate name as initialized in the LAMMPS input ...
Definition: event_list.h:194
double ** coords
Template molecule xyz (coordinates) array from lammps. This is a pointer to double[mol_natoms][3].
Definition: event_list.h:200
double * center
Definition: event_list.h:199
const double & getInsertionVel() const
Definition: event_list.cpp:123
const std::string & getAdsorbateName() const
Definition: event_list.cpp:137
const double & getRate() const
Definition: event_list.cpp:121
int atoms_num
Number of molecule atoms in LAMMPS (and in the xyz molecule/particle input file).
Definition: event_list.h:197
const int & getDepositionSites() const
Definition: event_list.cpp:131
void resetDepositionTries()
Definition: event_list.cpp:129
double ** getCoords()
Definition: event_list.cpp:141
void resetDepositionTriesAndSites()
Definition: event_list.cpp:133
void incrementDepositionTries()
Definition: event_list.cpp:127
const double & getStickingCoeff() const
Definition: event_list.cpp:126
~PredefinedDeposition()
Definition: event_list.cpp:117
int deposition_sites
available deposition sites for that specific deposition event.
Definition: event_list.h:192
double insertion_vel
velocity of inserted molecule/particle.
Definition: event_list.h:189
double * getCenter()
Definition: event_list.cpp:140
bool variable_sticking
true or false for variable and fixed sticking coefficients, respectively.
Definition: event_list.h:190
const double & getDepoOffset() const
Definition: event_list.cpp:122
int deposition_tries
total sites (i.e., free + occupied) for that specific deposition event.
Definition: event_list.h:191
int parent_type
type of candidate parent atom.
Definition: event_list.h:186
int * getAtomTypes()
Definition: event_list.cpp:139
double sticking_coeff
sticking coefficient (i.e., free sites/ total sites). Does not change its value if variable_sticking=...
Definition: event_list.h:193
class associated with diffusion events. This is a Predefined template for PAPRECA::DiffusionHop event...
Definition: event_list.h:120
PredefinedDiffusionHop(const int &parent_type_in, const double &insertion_vel_in, const double &diffusion_dist_in, const double &rate_in, const std::string &custom_style_in, const std::vector< int > &style_atomtypes_in)
Definition: event_list.cpp:81
const int & getDiffusedAtomType() const
Definition: event_list.cpp:88
~PredefinedDiffusionHop()
Definition: event_list.cpp:83
const double & getRate() const
Definition: event_list.cpp:91
const std::string & getCustomStyle() const
Definition: event_list.cpp:92
const int & getParentAtomType() const
Definition: event_list.cpp:86
std::string custom_style
displace atom by that much.
Definition: event_list.h:147
const double & getDiffusionDist() const
Definition: event_list.cpp:90
double diffusion_dist
Definition: event_list.h:146
std::vector< int > style_atomtypes
vector that allows you to pass information about atom types from the PAPRECA input file.
Definition: event_list.h:148
int diffused_type
type of diffused atom. This can be the same as the parent type. Alternatively, it can be set to a dif...
Definition: event_list.h:144
const std::vector< int > & getStyleAtomTypes() const
Definition: event_list.cpp:93
const double & getInsertionVel() const
Definition: event_list.cpp:87
double rate
Definition: event_list.h:149
int parent_type
type of candidate parent atom.
Definition: event_list.h:142
double insertion_vel
velocity of the displaced atom.
Definition: event_list.h:143
bool is_displacive
Definition: event_list.h:145
const bool & isDisplacive() const
Displacive events "move" the parent atom, while non-displacive events, create a new atom at the vacan...
Definition: event_list.cpp:89
General class that stores ALL the predefined events in the system. You can consider this as the Prede...
Definition: event_list.h:233
~PredefinedEventsCatalog()
Definition: event_list.cpp:302
INT2INT_MAP bonds_max
Limiting the maximum number of bonds per atom type.
Definition: event_list.h:265
INT_SET depositions_set
Set of atom types (ints) that can be parents to deposition events.
Definition: event_list.h:274
INT_SET diffusions_set
Set of diffusable types.
Definition: event_list.h:269
INT_SET monodes_set
Set of atom types (ints) that can be parents to monoatomic desorption events.
Definition: event_list.h:278
void deletePredefinedBondBreaksFromMap()
Definition: event_list.cpp:255
void deletePredefinedDiffusionsFromMap()
Definition: event_list.cpp:201
void clearBondsMaxMap()
Definition: event_list.cpp:253
PAIR_SET bond_forms_set
Set of bond formable pair of ints (representing types of atoms).
Definition: event_list.h:263
PAIR2BONDFORM_MAP bond_forms_map
Mapping pair of ints to corresponding predefined bond formation event.
Definition: event_list.h:264
void deletePredefinedBondFormsFromMap()
Definition: event_list.cpp:225
void deletePredefinedDepositionsFromMap()
Definition: event_list.cpp:156
void deletePredefinedMonoatomicDesorptionsFromMap()
Definition: event_list.cpp:277
TYPE2MONODES_MAP monodes_map
Mapping atom type to corresponding desorption event.
Definition: event_list.h:279
INT_SET bond_breaks_set
Set of ints (representing bond types).
Definition: event_list.h:259
TYPE2REACTION_MAP bond_breaks_map
Mapping breaking bond types to corresponding predefined bond break event.
Definition: event_list.h:260
PredefinedEventsCatalog()
Definition: event_list.cpp:301
TYPE2DEPOSITION_MAP depositions_map
Mapping atom type to corresponding deposition event.
Definition: event_list.h:275
INT2INTSMAP_MAP bondtypes_max
This can be used if you want to limit the number of specific bonds that an atom type can form....
Definition: event_list.h:266
TYPE2DIFFUSION_MAP diffusions_map
Mapping diffusable type to corresponding diffusion event.
Definition: event_list.h:270
associated with monoatomic desorption events. This is a Predefined template for PAPRECA::MonoatomicDe...
Definition: event_list.h:205
double rate
Definition: event_list.h:220
int parent_type
Definition: event_list.h:219
const double & getRate() const
Definition: event_list.cpp:151
PredefinedMonoatomicDesorption(const int &parent_type_in, const double &rate_in)
Definition: event_list.cpp:146
~PredefinedMonoatomicDesorption()
Definition: event_list.cpp:147
const int & getParentAtomType() const
Definition: event_list.cpp:150
class associated with reaction events. This is a Predefined template for PAPRECA::BondBreak and PAPRE...
Definition: event_list.h:55
const int & getAtom2Type() const
Definition: event_list.cpp:36
void setLimitLowSqr(const double &limit_low_sqr_in)
Definition: event_list.cpp:40
const std::vector< int > & getCatalyzingTypes() const
Definition: event_list.cpp:56
const double & getLengthEquil() const
Definition: event_list.cpp:39
int atom2_type
Definition: event_list.h:83
double limit_high_sqr
Definition: event_list.h:87
void setLimitHighSqr(const double &limit_high_sqr_in)
Definition: event_list.cpp:42
int atom1_type
Definition: event_list.h:82
double length_equil
Definition: event_list.h:85
double limit_low_sqr
Definition: event_list.h:86
~PredefinedReaction()
Definition: event_list.cpp:32
bool is_form
this variable allows us to differentiate between the parent class PAPRECA::PredefinedReaction and the...
Definition: event_list.h:90
const double & getLimitHighSqr() const
Definition: event_list.cpp:43
double rate
Definition: event_list.h:88
const double & getRate() const
Definition: event_list.cpp:55
std::vector< int > catalyzing_types
these types of atoms have to be present in the neighborhood of atom1 or atom2. Otherwise,...
Definition: event_list.h:89
const int & getAtom1Type() const
Definition: event_list.cpp:35
const int & getBondType() const
Definition: event_list.cpp:37
int bond_type
Definition: event_list.h:84
const double & getLimitLowSqr() const
Definition: event_list.cpp:41
void setSqrLimits(const double &length_equil_in, const double &length_perc_in)
Definition: event_list.cpp:44
PredefinedReaction(const int &atom1_type_in, const int &atom2_type_in, const int &bond_type_in, const double &rate_in)
Definition: event_list.cpp:30
void setLengthEquil(const double &length_equil_in)
Definition: event_list.cpp:38
const bool & isForm() const
Definition: event_list.cpp:57
std::unordered_map< INT_PAIR, PredefinedBondForm *, PairHash > PAIR2BONDFORM_MAP
Definition: event_list.h:226
std::unordered_map< int, INT2INT_MAP > INT2INTSMAP_MAP
Definition: utilities.h:182
std::unordered_set< int > INT_SET
Definition: utilities.h:183
std::unordered_set< INT_PAIR, PairHash > PAIR_SET
Definition: utilities.h:176
std::unordered_map< int, PredefinedDiffusionHop * > TYPE2DIFFUSION_MAP
Definition: event_list.h:228
std::unordered_map< int, PredefinedMonoatomicDesorption * > TYPE2MONODES_MAP
Definition: event_list.h:230
std::unordered_map< int, int > INT2INT_MAP
Definition: utilities.h:181
std::unordered_map< int, PredefinedDeposition * > TYPE2DEPOSITION_MAP
Definition: event_list.h:229
std::unordered_map< int, PredefinedReaction * > TYPE2REACTION_MAP
Definition: event_list.h:225
Utility functions (e.g., for arrays, strings etc.) and typedefs used in papreca.cpp main and in the o...