/* SPDX-FileCopyrightText: Copyright (c) 2021 - 2026, the adamantine authors. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ #ifndef MATERIAL_DEPOSITION_HH #define MATERIAL_DEPOSITION_HH #include #include #include #include #include namespace adamantine { /** * Return the bounding boxes, the deposition times, the cosine of the deposition * angles, and the sine of the deposition angles. */ template std::tuple>, std::vector, std::vector, std::vector> create_material_deposition_boxes( boost::property_tree::ptree const &geometry_database, std::vector>> &heat_sources); /** * Read the material deposition file and return the bounding boxes, the * deposition times, the cosine of the deposition angles, and the sine of the * deposition angles. */ template std::tuple>, std::vector, std::vector, std::vector> read_material_deposition(boost::property_tree::ptree const &geometry_database); /** * Return the bounding boxes, the deposition times, the cosine of the deposition * angles, and the sine of deposition angles based on the scan path. */ template std::tuple>, std::vector, std::vector, std::vector> deposition_along_scan_path(boost::property_tree::ptree const &geometry_database, ScanPath const &scan_path); /** * Merge a vector of tuple of bounding boxes, deposition times, cosine of * deposition angles, and sine of deposition angles into a * single tuple of vectors, sorted by deposition time. */ template std::tuple>, std::vector, std::vector, std::vector> merge_deposition_paths( std::vector>, std::vector, std::vector, std::vector>> const &bounding_box_lists); /** * Return a vector of cells to activate for each time deposition. */ template std::vector::active_cell_iterator>> get_elements_to_activate( Geometry const &geometry, dealii::DoFHandler const &dof_handler, std::vector> const &material_deposition_boxes); } // namespace adamantine #endif