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 ,
const double &length_equil ,
const double &length_limit );
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 ,
const double &length_equil ,
const double &length_perc );
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:132
Child class of File, manages execTimes.log files.
Definition: export_files.h:152
Child class of File, manages heightVtime.log files.
Definition: export_files.h:94
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
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:216
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:177
const double & getTimeEnd()
Definition: papreca_config.cpp:35
void calcMDTime4ExecTimeFile(const int &nprocs, const int &KMC_loopid)
Definition: papreca_config.cpp:522
const double & getHeightPercentage() const
Definition: papreca_config.cpp:332
void setSigmaStyle(const std::string &sigmastyle_in)
Definition: papreca_config.cpp:351
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:324
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:433
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:304
void setRandomDiffVecsStyle(const std::string &diffvecs_style_in)
Definition: papreca_config.cpp:305
int getMaxBondTypesOfSpecies(const int &atom_type, const int &bond_type)
Definition: papreca_config.cpp:82
const double & getBinWidth() const
Definition: papreca_config.cpp:334
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:480
const std::string & getDesorptionStyle() const
Definition: papreca_config.cpp:325
void initSigmasFromLammps(LAMMPS_NS::LAMMPS *lmp)
Definition: papreca_config.cpp:338
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:186
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, const double &length_equil, const double &length_perc)
Definition: papreca_config.cpp:151
void setRandomDiffVecs(const bool &random_diffvecs_in)
Definition: papreca_config.cpp:303
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:331
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:306
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:321
const bool type2SigmaMapIsEmpty() const
Definition: papreca_config.cpp:424
void setDesorbDelMax(const int &desorb_delmax_in)
Definition: papreca_config.cpp:322
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:315
void setTrajDuration(const int &traj_duration_in)
Definition: papreca_config.cpp:432
const bool predefinedCatalogHasDiffusionHopEvents() const
Definition: papreca_config.cpp:290
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:429
void setMDTimeStamp4ExecTimeFile(const int &KMC_loopid)
Definition: papreca_config.cpp:516
const std::string & getHalfNeibListName() const
Definition: papreca_config.cpp:444
void setBinWidth(const double &bin_width_in)
Definition: papreca_config.cpp:333
void setupExportFiles(const int &proc_id)
Definition: papreca_config.cpp:483
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:291
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:529
int getMaxBondsFromSpecies(const int &atom_type)
Definition: papreca_config.cpp:72
void setCtimeConvert(const double &c_convert_in)
Definition: papreca_config.cpp:434
void setDepoHeights(const double &height_deposcan_in, const double &height_deporeject_in)
Definition: papreca_config.cpp:307
const bool predefinedCatalogHasMonoDesEvents() const
Definition: papreca_config.cpp:292
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:302
const std::string & getHeightMethod() const
Definition: papreca_config.cpp:330
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
const std::string & getFullNeibListName() const
Definition: papreca_config.cpp:445
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:558
const std::string & getSigmaMixStyle() const
Definition: papreca_config.cpp:354
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:329
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:481
PredefinedMonoatomicDesorption * getMonoatomicDesorptionFromAtomType(const int &atom_type)
Definition: papreca_config.cpp:120
const int & getRestartDumpFreq() const
Definition: papreca_config.cpp:573
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:214
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:505
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:288
const bool predefinedCatalogIsEmpty() const
Definition: papreca_config.cpp:293
const bool predefinedCatalogHasBondFormEvents() const
Definition: papreca_config.cpp:289
void setHybridStartTimeStamp4ExecTimeFile(const int &KMC_loopid)
Definition: papreca_config.cpp:498
void dumpLAMMPSRestart(LAMMPS_NS::LAMMPS *lmp, const int KMC_loopid)
Definition: papreca_config.cpp:574
void initPredefinedReaction(const int &atom1_type, const int &atom2_type, const int &bond_type, const double &rate, const std::vector< int > &catalyzing_types, const double &length_equil, const double &length_limit)
Definition: papreca_config.cpp:132
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:543
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:340
std::string sigma_mix
Definition: papreca_config.h:214
const bool ranNumGeneratorIsInitialized() const
Definition: papreca_config.cpp:40
HeightVtime & getHeightVtimeFile()
Definition: papreca_config.cpp:450
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:449
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:205
void setSigmaMix(const std::string &mixstyle_in)
Definition: papreca_config.cpp:353
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:356
void setMinimize2(const std::string &minimize2_in)
Definition: papreca_config.cpp:430
void setTimeEnd(const double &time_end_in)
Definition: papreca_config.cpp:34
void setRestartDumpFreq(const int &restart_dumpfreq_in)
Definition: papreca_config.cpp:572
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:451
const double & getHeightDepoReject() const
Definition: papreca_config.cpp:316
void setRandomDepoVecs(const bool &random_depovecs_in)
Definition: papreca_config.cpp:301
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:213
const std::string & getSigmaStyle() const
Definition: papreca_config.cpp:352
const double getSigmaFromAtomTypes(const int &atom1_type, const int &atom2_type)
Definition: papreca_config.cpp:405
const std::string & getMinimize2() const
Definition: papreca_config.cpp:431
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:428
void setDesorptionHeight(const double &desorb_cut_in)
Definition: papreca_config.cpp:320
const double & getCtimeConvert()
Definition: papreca_config.cpp:435
const int & getDesorbDelMax() const
Definition: papreca_config.cpp:323
void setNeibLists(const std::string &neiblist_half_in, const std::string &neiblist_full_in)
Definition: papreca_config.cpp:439
void setFrozenAtomTypes(const std::vector< int > &frozen_atomtypes_in)
Definition: papreca_config.cpp:45
void calcSurfaceCoverage()
Definition: papreca_config.cpp:453
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:153
class associated with diffusion events. This is a Predefined template for PAPRECA::DiffusionHop event...
Definition: event_list.h:120
General class that stores ALL the predefined events in the system. You can consider this as the Prede...
Definition: event_list.h:233
associated with monoatomic desorption events. This is a Predefined template for PAPRECA::MonoatomicDe...
Definition: event_list.h:205
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:113
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...