Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : // MOOSE includes 11 : #include "WaveSpeedVPP.h" 12 : #include "ElementsIntersectedByPlane.h" 13 : #include "MooseMesh.h" 14 : #include "HLLCUserObject.h" 15 : 16 : registerMooseObject("NavierStokesApp", WaveSpeedVPP); 17 : 18 : InputParameters 19 76 : WaveSpeedVPP::validParams() 20 : { 21 76 : InputParameters params = GeneralVectorPostprocessor::validParams(); 22 152 : params.addRequiredParam<unsigned int>("elem_id", "ID of the element"); 23 152 : params.addRequiredParam<unsigned int>("side_id", "ID of the side"); 24 152 : params.addRequiredParam<UserObjectName>("hllc_uo", "Name of HLLC UO"); 25 76 : params.addClassDescription("Extracts wave speeds from HLLC userobject for a given face"); 26 76 : return params; 27 0 : } 28 : 29 38 : WaveSpeedVPP::WaveSpeedVPP(const InputParameters & parameters) 30 : : GeneralVectorPostprocessor(parameters), 31 38 : _hllc(getUserObject<HLLCUserObject>("hllc_uo")), 32 76 : _side_id(getParam<unsigned int>("side_id")), 33 76 : _wave_speeds(declareVector("wave_speed")) 34 : { 35 38 : } 36 : 37 : void 38 28 : WaveSpeedVPP::initialize() 39 : { 40 56 : _elem = _fe_problem.mesh().queryElemPtr(getParam<unsigned int>("elem_id")); 41 28 : _wave_speeds.clear(); 42 28 : } 43 : 44 : void 45 28 : WaveSpeedVPP::execute() 46 : { 47 28 : if (!_elem || !_hllc.hasData(_elem, _side_id)) 48 10 : return; 49 : 50 18 : const auto & ws = _hllc.waveSpeed(_elem, _side_id); 51 18 : _wave_speeds.resize(ws.size()); 52 72 : for (const auto j : index_range(ws)) 53 54 : _wave_speeds[j] = MetaPhysicL::raw_value(ws[j]); 54 18 : } 55 : 56 : void 57 28 : WaveSpeedVPP::finalize() 58 : { 59 28 : _communicator.allgather(_wave_speeds); 60 28 : }