Line data Source code
1 : /**********************************************************************/ 2 : /* DO NOT MODIFY THIS HEADER */ 3 : /* MAGPIE - Mesoscale Atomistic Glue Program for Integrated Execution */ 4 : /* */ 5 : /* Copyright 2017 Battelle Energy Alliance, LLC */ 6 : /* ALL RIGHTS RESERVED */ 7 : /**********************************************************************/ 8 : 9 : #pragma once 10 : 11 : #include "MDRunBase.h" 12 : 13 : class Function; 14 : 15 : /** 16 : * Reads lammps dump files to emulate MD simulation 17 : */ 18 : class LAMMPSFileRunner : public MDRunBase 19 : { 20 : public: 21 : static InputParameters validParams(); 22 : 23 : LAMMPSFileRunner(const InputParameters & parameters); 24 : 25 260 : virtual void initialize() override {} 26 260 : virtual void execute() override {} 27 260 : virtual void finalize() override {} 28 : virtual void initialSetup() override; 29 : 30 : virtual void updateParticleList() override; 31 : 32 : protected: 33 : /// reads a LAMMPS file 34 : void readLAMMPSFile(FileName filename); 35 : 36 : /// reads two LAMMPS files and interpolates times 37 : void readLAMMPSFileHistory(std::pair<FileName, FileName> filenames, 38 : std::pair<Real, Real> timestamps, 39 : Real current_time); 40 : 41 : /// helper function that finds two files, one right before and one right after md_time 42 : void findBracketingLAMMPSFiles(Real md_time, 43 : std::pair<std::string, std::string> & filenames, 44 : std::pair<Real, Real> & timestamps); 45 : 46 : bool isTimestamp(std::string ts_candidate) const; 47 : 48 : /// whether a sequence of input files or a single input file is read 49 : bool _time_sequence; 50 : 51 : /// name of LAMMPS file or file base if _time_sequence == true 52 : FileName _lammps_file; 53 : 54 : /// column of x, y, z coordinate in LAMMPS files 55 : std::vector<unsigned int> _pos_columns; 56 : 57 : /// column of properties in LAMMPS files 58 : std::vector<unsigned int> _prop_columns; 59 : 60 : /// Conversion from FEM time to MD time_stamp 61 : const Function * _time_conversion; 62 : };