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