25 "Array of combinatorial logic each entry has the following required params "
26 "<TT>chi_mesh::BooleanLogicalVolumeArgumentPair</TT>");
29 "chi_mesh::BooleanLogicalVolumeArgumentPair");
38 const auto& input_parts = params.
GetParam(
"parts");
41 for (
size_t p = 0; p < input_parts.NumParameters(); ++p)
43 const auto& part = input_parts.GetParam(p);
48 part_params.AssignParameters(part);
50 const size_t lv_handle = part_params.GetParamValue<
size_t>(
"lv");
51 auto lv_ptr = Chi::GetStackItemPtrAsType<LogicalVolume>(
54 parts.emplace_back(part_params.GetParamValue<
bool>(
"op"), lv_ptr);
62 params.
SetDocGroup(
"chi_mesh__BooleanLogicalVolume");
66 "Boolean value indicating the volume sense. True means inside, False means "
75 for (
const auto& part :
parts)
77 if (part.first != part.second->Inside(point))
return false;
static std::vector< ChiObjectPtr > object_stack
void RequireBlockTypeIs(ParameterBlockType type) const
ParameterBlock & GetParam(const std::string ¶m_name)
bool Inside(const chi_mesh::Vector3 &point) const override
BooleanLogicalVolume(const chi::InputParameters ¶ms)
std::vector< std::pair< bool, std::shared_ptr< const LogicalVolume > > > parts
static chi::InputParameters GetInputParameters()
static chi::InputParameters GetInputParameters()
chi::InputParameters BooleanLogicalVolumeArgumentPair()
RegisterSyntaxBlock(chi_mesh, BooleanLogicalVolumeArgumentPair, BooleanLogicalVolumeArgumentPair)
RegisterChiObject(chi_mesh, BooleanLogicalVolume)