23 #ifndef PAPRECA_CONFIG_H
24 #define PAPRECA_CONFIG_H
29 #include "random_mars.h"
62 void setKMCsteps(
const unsigned long int &KMC_steps_in );
64 void setKMCperMD(
const unsigned long int &KMC_per_MD_in );
88 void initPredefinedReaction(
const int &atom1_type ,
const int &atom2_type ,
const int &bond_type ,
const double &rate ,
const std::vector< int > &catalyzing_types );
89 void initPredefinedBondForm(
const int &atom1_type ,
const int &atom2_type ,
const int &bond_type ,
const double &bond_dist ,
const int &delete_atoms ,
const int &lone_candidates ,
const bool &same_mol ,
const double &rate ,
const std::vector< int > &catalyzing_types );
90 void initPredefinedDiffusionHop(
const int &parent_type ,
const double &insertion_vel ,
const double &diff_dist ,
const bool &is_displacive ,
const int &diffused_type ,
const double &rate ,
const std::string &custom_style ,
const std::vector< int > &custom_atomtypes );
91 void initPredefinedDeposition( LAMMPS_NS::LAMMPS *lmp ,
const int &parent_type ,
const double &depo_offset ,
const double &insertion_vel ,
const std::string &adsorbate_name ,
const double &rate ,
const bool &variable_sticking ,
const double &sticking_coeff );
113 void setDepoHeights(
const double &height_deposcan_in ,
const double &height_deporeject_in );
138 void setSigmaMix(
const std::string &mixstyle_in );
140 void mixSigmas( LAMMPS_NS::LAMMPS *lmp );
155 void setNeibLists(
const std::string &neiblist_half_in ,
const std::string &neiblist_full_in );
171 void appendExportFiles( LAMMPS_NS::LAMMPS *lmp ,
const int &proc_id ,
const double &time ,
const char *event_type ,
const double &film_height ,
const int &KMC_loopid );
172 void dumpElementalDistributionFile( LAMMPS_NS::LAMMPS *lmp ,
const int &proc_id ,
const int &KMC_loopid ,
double **mass_profiles_total ,
double *atom_mass ,
const int &bins_num ,
const int &types_num );
187 double time_end = std::numeric_limits< double >::max( );
Child class of File, manages distribution.log files.
Definition: export_files.h:129
Child class of File, manages execTimes.log files.
Definition: export_files.h:149
Child class of File, manages heightVtime.log files.
Definition: export_files.h:91
Child class of File, manages papreca.log files.
Definition: export_files.h:70
Class storing settings and global variables for the PAPRECA run.
Definition: papreca_config.h:51
SurfaceCoverage surfcoverage_file
stores a PAPRECA::SurfaceCoverage file.
Definition: papreca_config.h:230
void initPredefinedReaction(const int &atom1_type, const int &atom2_type, const int &bond_type, const double &rate, const std::vector< int > &catalyzing_types)
Definition: papreca_config.cpp:131
unsigned long int KMC_per_MD
Perform that many KMC(PAPRECA) steps for every MD(LAMMPS) step.
Definition: papreca_config.h:186
void calcStickingCoeffs()
Definition: papreca_config.cpp:210
void initPredefinedDiffusionHop(const int &parent_type, const double &insertion_vel, const double &diff_dist, const bool &is_displacive, const int &diffused_type, const double &rate, const std::string &custom_style, const std::vector< int > &custom_atomtypes)
Definition: papreca_config.cpp:171
const double & getTimeEnd()
Definition: papreca_config.cpp:35
void calcMDTime4ExecTimeFile(const int &nprocs, const int &KMC_loopid)
Definition: papreca_config.cpp:516
const double & getHeightPercentage() const
Definition: papreca_config.cpp:326
void setSigmaStyle(const std::string &sigmastyle_in)
Definition: papreca_config.cpp:345
std::vector< int > fluid_atomtypes
stores fluid atom types (as defined in the PAPRECA input file).
Definition: papreca_config.h:190
void setDesorptionStyle(const std::string &desorb_style_in)
Definition: papreca_config.cpp:318
PaprecaConfig()
Definition: papreca_config.cpp:26
void setFluidAtomTypes(const std::vector< int > &fluid_atomtypes_in)
Definition: papreca_config.cpp:43
const int & getTrajDuration() const
Definition: papreca_config.cpp:427
double time_end
Optional parameter. The user can define an ending simulation time. If not set it stays at limits of m...
Definition: papreca_config.h:187
const bool & diffVecsAreRandom() const
Definition: papreca_config.cpp:298
void setRandomDiffVecsStyle(const std::string &diffvecs_style_in)
Definition: papreca_config.cpp:299
int getMaxBondTypesOfSpecies(const int &atom_type, const int &bond_type)
Definition: papreca_config.cpp:82
const double & getBinWidth() const
Definition: papreca_config.cpp:328
PredefinedReaction * getReactionFromBondType(const int &bond_type)
Definition: papreca_config.cpp:50
double height_deposcan
Scan for deposition events only +- above/below the current film height. Default at -1 which means sca...
Definition: papreca_config.h:198
ElementalDistribution & getElementalDistributionsFile()
Definition: papreca_config.cpp:474
const std::string & getDesorptionStyle() const
Definition: papreca_config.cpp:319
void initSigmasFromLammps(LAMMPS_NS::LAMMPS *lmp)
Definition: papreca_config.cpp:332
double surface_coverage
stores a surface coverage for easier printing (if necessary).
Definition: papreca_config.h:231
void initPredefinedDeposition(LAMMPS_NS::LAMMPS *lmp, const int &parent_type, const double &depo_offset, const double &insertion_vel, const std::string &adsorbate_name, const double &rate, const bool &variable_sticking, const double &sticking_coeff)
Definition: papreca_config.cpp:180
void setRandomDiffVecs(const bool &random_diffvecs_in)
Definition: papreca_config.cpp:297
bool random_depovecs
Controls deposition sites. If true, the deposition sites are not directly above the parent atom,...
Definition: papreca_config.h:195
void setHeightPercentage(const double &height_percentage_in)
Definition: papreca_config.cpp:325
void setKMCperMD(const unsigned long int &KMC_per_MD_in)
Definition: papreca_config.cpp:32
std::string diffvecs_style
Type 2D means that the random diffusion vector is always ABOVE the parent type. Type 3D means that th...
Definition: papreca_config.h:197
const std::string & getRandomDiffVecsStyle() const
Definition: papreca_config.cpp:300
double desorb_cut
Atoms above film_height + desorb_cut are deleted. The default value is -1 which means that desorption...
Definition: papreca_config.h:202
const double & getDesorptionHeight() const
Definition: papreca_config.cpp:315
const bool type2SigmaMapIsEmpty() const
Definition: papreca_config.cpp:418
void setDesorbDelMax(const int &desorb_delmax_in)
Definition: papreca_config.cpp:316
Log log_file
stores a PAPRECA::Log file The log file is always active (no need to be set to active from the input ...
Definition: papreca_config.h:228
const double & getHeightDepoScan() const
Definition: papreca_config.cpp:309
void setTrajDuration(const int &traj_duration_in)
Definition: papreca_config.cpp:426
const bool predefinedCatalogHasDiffusionHopEvents() const
Definition: papreca_config.cpp:284
std::string minimize1
stores a valid LAMMPS minimization command to be executed before the LAMMPS trajectory....
Definition: papreca_config.h:218
const std::string & getMinimize1() const
Definition: papreca_config.cpp:423
void setMDTimeStamp4ExecTimeFile(const int &KMC_loopid)
Definition: papreca_config.cpp:510
const std::string & getHalfNeibListName() const
Definition: papreca_config.cpp:438
void setBinWidth(const double &bin_width_in)
Definition: papreca_config.cpp:327
void setupExportFiles(const int &proc_id)
Definition: papreca_config.cpp:477
std::string height_method
Algorithm to calculate height. Currently, only the mass_bins method is supported.
Definition: papreca_config.h:207
const bool predefinedCatalogHasDepositionEvents() const
Definition: papreca_config.cpp:285
unsigned long int KMC_steps
perform that many PAPRECA steps.
Definition: papreca_config.h:185
int restart_dumpfreq
dump a restart every restart_dumpfreq PAPRECA steps. Initialized at int limits, so if it is not set y...
Definition: papreca_config.h:234
void dumpElementalDistributionFile(LAMMPS_NS::LAMMPS *lmp, const int &proc_id, const int &KMC_loopid, double **mass_profiles_total, double *atom_mass, const int &bins_num, const int &types_num)
Definition: papreca_config.cpp:523
int getMaxBondsFromSpecies(const int &atom_type)
Definition: papreca_config.cpp:72
void setCtimeConvert(const double &c_convert_in)
Definition: papreca_config.cpp:428
void setDepoHeights(const double &height_deposcan_in, const double &height_deporeject_in)
Definition: papreca_config.cpp:301
const bool predefinedCatalogHasMonoDesEvents() const
Definition: papreca_config.cpp:286
bool random_diffvecs
Controls diffusion sites. If true, the diffusion sites are not directly above the parent atom,...
Definition: papreca_config.h:196
const bool & depoVecsAreRandom() const
Definition: papreca_config.cpp:296
const std::string & getHeightMethod() const
Definition: papreca_config.cpp:324
PredefinedDeposition * getDepositionFromParentAtomType(const int &atom_type)
Definition: papreca_config.cpp:109
const unsigned long int & getKMCsteps() const
Definition: papreca_config.cpp:31
std::string neiblist_half
Name of LAMMPS half neighbors list.
Definition: papreca_config.h:224
void initPredefinedBondForm(const int &atom1_type, const int &atom2_type, const int &bond_type, const double &bond_dist, const int &delete_atoms, const int &lone_candidates, const bool &same_mol, const double &rate, const std::vector< int > &catalyzing_types)
Definition: papreca_config.cpp:148
const std::string & getFullNeibListName() const
Definition: papreca_config.cpp:439
std::string sigma_style
method for initialization of sigma values (can be manual/LAMMPS).
Definition: papreca_config.h:213
void closeExportFiles(const int &proc_id)
Definition: papreca_config.cpp:552
const std::string & getSigmaMixStyle() const
Definition: papreca_config.cpp:348
std::vector< int > frozen_atomtypes
stores frozen atom types (as defined in the PAPRECA input file).
Definition: papreca_config.h:191
void setHeightMethod(const std::string &height_method_in)
Definition: papreca_config.cpp:323
void setKMCsteps(const unsigned long int &KMC_steps_in)
Definition: papreca_config.cpp:30
double c_time_convert
This variable is initialized from lmp->update->unit_style to allow conversion of time units to second...
Definition: papreca_config.h:221
ExecTime & getExecTimeFile()
Definition: papreca_config.cpp:475
PredefinedMonoatomicDesorption * getMonoatomicDesorptionFromAtomType(const int &atom_type)
Definition: papreca_config.cpp:120
const int & getRestartDumpFreq() const
Definition: papreca_config.cpp:567
ExecTime execTime_file
stores a PAPRECA::ExecTime file.
Definition: papreca_config.h:233
std::string minimize2
stores a valid LAMMPS minimization command to be executed after the LAMMPS trajectory....
Definition: papreca_config.h:219
~PaprecaConfig()
Definition: papreca_config.cpp:27
std::string desorb_style
User defined desorption algorithm. Currently, can be gather_local or gather_all (defined in the PAPRE...
Definition: papreca_config.h:204
void setSpeciesMaxBondTypes(const int &species, const int &bond_type, const int &bonds_max)
Definition: papreca_config.cpp:208
std::string neiblist_full
Name of LAMMPS full neighbors list.
Definition: papreca_config.h:225
const std::vector< int > & getFluidAtomTypes() const
Definition: papreca_config.cpp:44
void calcHybridAndKMCTimes4ExecTimeFile(const int &nprocs, const int &KMC_loopid)
Definition: papreca_config.cpp:499
INTPAIR2DOUBLE_MAP type2sigma
maps types of atom types to their corresponding sigma.
Definition: papreca_config.h:212
const double getUniformRanNum() const
Definition: papreca_config.cpp:39
const bool predefinedCatalogHasBondBreakEvents() const
Definition: papreca_config.cpp:282
const bool predefinedCatalogIsEmpty() const
Definition: papreca_config.cpp:287
const bool predefinedCatalogHasBondFormEvents() const
Definition: papreca_config.cpp:283
void setHybridStartTimeStamp4ExecTimeFile(const int &KMC_loopid)
Definition: papreca_config.cpp:492
void dumpLAMMPSRestart(LAMMPS_NS::LAMMPS *lmp, const int KMC_loopid)
Definition: papreca_config.cpp:568
const std::vector< int > & getFrozenAtomTypes() const
Definition: papreca_config.cpp:46
void appendExportFiles(LAMMPS_NS::LAMMPS *lmp, const int &proc_id, const double &time, const char *event_type, const double &film_height, const int &KMC_loopid)
Definition: papreca_config.cpp:537
double height_percentage
Only used for height calculation method: mass_bins. Defines the mass percentage cutoff....
Definition: papreca_config.h:208
void setSpeciesPair2Sigma(const int &species1, const int &species2, const double &sigma)
Definition: papreca_config.cpp:334
std::string sigma_mix
Definition: papreca_config.h:214
const bool ranNumGeneratorIsInitialized() const
Definition: papreca_config.cpp:40
HeightVtime & getHeightVtimeFile()
Definition: papreca_config.cpp:444
PredefinedBondForm * getBondFormFromAtomTypesPair(const INT_PAIR &types_pair)
Definition: papreca_config.cpp:61
HeightVtime heightVtime_file
stores a PAPRECA::HeightVtime file.
Definition: papreca_config.h:229
Log & getLogFile()
Definition: papreca_config.cpp:443
LAMMPS_NS::RanMars * rnum_gen
Points to RanMars object as implemented in LAMMPS (see random_mars.h). The LAMMPS RanMars object is i...
Definition: papreca_config.h:182
void initPredefinedMonoatomicDesorption(const int &parent_type, const double &rate)
Definition: papreca_config.cpp:199
void setSigmaMix(const std::string &mixstyle_in)
Definition: papreca_config.cpp:347
int desorb_delmax
Maximum number of atoms that can be deleted at once. Initialized at max limits of int so if the user ...
Definition: papreca_config.h:203
PredefinedDiffusionHop * getDiffusionHopFromAtomType(const int &atom_type)
Definition: papreca_config.cpp:98
const unsigned long int & getKMCperMD() const
Definition: papreca_config.cpp:33
void mixSigmas(LAMMPS_NS::LAMMPS *lmp)
Definition: papreca_config.cpp:350
void setMinimize2(const std::string &minimize2_in)
Definition: papreca_config.cpp:424
void setTimeEnd(const double &time_end_in)
Definition: papreca_config.cpp:34
void setRestartDumpFreq(const int &restart_dumpfreq_in)
Definition: papreca_config.cpp:566
void initRanNumGenerator(LAMMPS_NS::LAMMPS *lmp, const int &seed)
Definition: papreca_config.cpp:38
int traj_duration
This control the duration of the LAMMPS minimization. The specific LAMMPS fixes have to be defined in...
Definition: papreca_config.h:220
SurfaceCoverage & getSurfaceCoverageFile()
Definition: papreca_config.cpp:445
const double & getHeightDepoReject() const
Definition: papreca_config.cpp:310
void setRandomDepoVecs(const bool &random_depovecs_in)
Definition: papreca_config.cpp:295
double height_deporeject
Reject deposition event above height_current + height_deporeject. Default at -1 which means do not re...
Definition: papreca_config.h:199
ElementalDistribution elementalDistribution_files
stores the PAPRECA::ElementalDistribution files generated in the simulation.
Definition: papreca_config.h:232
void setSpeciesMaxBonds(const int &species, const int &bonds_max)
Definition: papreca_config.cpp:207
const std::string & getSigmaStyle() const
Definition: papreca_config.cpp:346
const double getSigmaFromAtomTypes(const int &atom1_type, const int &atom2_type)
Definition: papreca_config.cpp:399
const std::string & getMinimize2() const
Definition: papreca_config.cpp:425
double bin_width
Bin width for height calculation or for ElementaDistribution files. Initialized at 1....
Definition: papreca_config.h:209
void setMinimize1(const std::string &minimize1_in)
Definition: papreca_config.cpp:422
void setDesorptionHeight(const double &desorb_cut_in)
Definition: papreca_config.cpp:314
const double & getCtimeConvert()
Definition: papreca_config.cpp:429
const int & getDesorbDelMax() const
Definition: papreca_config.cpp:317
void setNeibLists(const std::string &neiblist_half_in, const std::string &neiblist_full_in)
Definition: papreca_config.cpp:433
void setFrozenAtomTypes(const std::vector< int > &frozen_atomtypes_in)
Definition: papreca_config.cpp:45
void calcSurfaceCoverage()
Definition: papreca_config.cpp:447
PredefinedEventsCatalog predefined_catalog
stores a PAPRECA::PredefinedEventsCatalog.
Definition: papreca_config.h:194
class associated with deposition events. This is a Predefined template for PAPRECA::Deposition events...
Definition: event_list.h:142
class associated with diffusion events. This is a Predefined template for PAPRECA::DiffusionHop event...
Definition: event_list.h:109
General class that stores ALL the predefined events in the system. You can consider this as the Prede...
Definition: event_list.h:222
associated with monoatomic desorption events. This is a Predefined template for PAPRECA::MonoatomicDe...
Definition: event_list.h:194
class associated with reaction events. This is a Predefined template for PAPRECA::BondBreak and PAPRE...
Definition: event_list.h:55
Child class of File, manages surface_coverage.log files.
Definition: export_files.h:110
Declarations of PredefinedEvent classes.
Declarations of export File classes.
Declarations for LAMMPS wrapper functions.
std::pair< int, int > INT_PAIR
Definition: utilities.h:175
std::unordered_map< INT_PAIR, double, PairHash > INTPAIR2DOUBLE_MAP
Definition: utilities.h:178
Utility functions (e.g., for arrays, strings etc.) and typedefs used in papreca.cpp main and in the o...