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 "MyTRIMRunBase.h" 12 : #include "ThreadedRecoilElementAveragedLoop.h" 13 : 14 : /** 15 : * This UserObject rasterizes a simulation domain for the MyTRIM library 16 : */ 17 : class MyTRIMElementRun : public MyTRIMRunBase 18 : { 19 : public: 20 : static InputParameters validParams(); 21 : 22 : MyTRIMElementRun(const InputParameters & parameters); 23 : 24 142 : virtual void initialize() {} 25 : virtual void execute(); 26 : virtual void finalize(); 27 : 28 : /// @{ shorthand typedefs 29 : typedef ThreadedRecoilElementAveragedLoop::MyTRIMResult MyTRIMResult; 30 : typedef ThreadedRecoilElementAveragedLoop::MyTRIMResultMap MyTRIMResultMap; 31 : /// @} 32 : 33 : /// get the TRIM result data 34 : const MyTRIMResult & result(const Elem *) const; 35 : 36 : protected: 37 : ///@{ pack/unpack the _result_map into a structure suitable for parallel communication 38 : void serialize(std::string & serialized_buffer); 39 : void deserialize(std::vector<std::string> & serialized_buffers); 40 : ///@} 41 : 42 : /// data such as interstitials and vacancies produced will be stored here 43 : MyTRIMResultMap _result_map; 44 : 45 : ///@{ timers 46 : PerfID _perf_trim; 47 : PerfID _perf_finalize; 48 : ///@} 49 : 50 : private: 51 : /// zero result to return for elements that have not been touched by the cascades 52 : MyTRIMResult _zero; 53 : };