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 "ElementsAlongPlane.h" 12 : #include "ElementsIntersectedByPlane.h" 13 : #include "MooseMesh.h" 14 : 15 : registerMooseObject("MooseApp", ElementsAlongPlane); 16 : 17 : InputParameters 18 14337 : ElementsAlongPlane::validParams() 19 : { 20 14337 : InputParameters params = GeneralVectorPostprocessor::validParams(); 21 : 22 14337 : params.addRequiredParam<Point>("point", "Point in the plane"); 23 14337 : params.addRequiredParam<Point>("normal", "Normal vector to the plane"); 24 14337 : params.addClassDescription( 25 : "Outputs the IDs of every element intersected by a user-defined plane"); 26 14337 : return params; 27 0 : } 28 : 29 36 : ElementsAlongPlane::ElementsAlongPlane(const InputParameters & parameters) 30 : : GeneralVectorPostprocessor(parameters), 31 36 : _p0(getParam<Point>("point")), 32 36 : _normal(getParam<Point>("normal")), 33 72 : _elem_ids(declareVector("elem_ids")) 34 : { 35 36 : _fe_problem.mesh().errorIfDistributedMesh("ElementsAlongPlane"); 36 36 : } 37 : 38 : void 39 33 : ElementsAlongPlane::initialize() 40 : { 41 33 : _elem_ids.clear(); 42 33 : } 43 : 44 : void 45 33 : ElementsAlongPlane::execute() 46 : { 47 33 : std::vector<const Elem *> intersected_elems; 48 : 49 33 : Moose::elementsIntersectedByPlane(_p0, _normal, _fe_problem.mesh(), intersected_elems); 50 : 51 33 : unsigned int num_elems = intersected_elems.size(); 52 : 53 33 : _elem_ids.resize(num_elems); 54 : 55 2343 : for (unsigned int i = 0; i < num_elems; i++) 56 2310 : _elem_ids[i] = intersected_elems[i]->id(); 57 33 : }