|
MFC
Exascale flow solver
|
Binary STL file reader and processor for immersed boundary geometry. More...
Functions/Subroutines | |
| impure subroutine | s_read_stl_binary (filepath, model) |
| This procedure reads a binary STL file. | |
| impure subroutine | s_read_stl_ascii (filepath, model) |
| This procedure reads an ASCII STL file. | |
| impure subroutine | s_read_stl (filepath, model) |
| This procedure reads an STL file. | |
| impure subroutine | s_read_obj (filepath, model) |
| This procedure reads an OBJ file. | |
| impure type(t_model) function, public | f_model_read (filepath) |
| This procedure reads a mesh from a file. | |
| impure subroutine | s_write_stl (filepath, model) |
| This procedure writes a binary STL file. | |
| impure subroutine | s_write_obj (filepath, model) |
| This procedure writes an OBJ file. | |
| impure subroutine, public | s_model_write (filepath, model) |
| This procedure writes a binary STL file. | |
| subroutine, public | s_model_free (model) |
| This procedure frees the memory allocated for an STL mesh. | |
| impure logical function | f_read_line (iunit, line) |
| impure subroutine | s_skip_ignored_lines (iunit, buffered_line, is_buffered) |
| Reads the next non-comment line from a model file, using a buffered look-ahead mechanism. | |
| real(wp) function | f_model_random_number (seed) |
| This function is used to replace the fortran random number generator because the native generator is not compatible being called from GPU routines/functions. | |
| impure real(wp) function, public | f_model_is_inside (model, point, spacing, spc) |
| This procedure, recursively, finds whether a point is inside an octree. | |
| real(wp) function, public | f_model_is_inside_flat (ntrs, pid, point) |
| This procedure, given a cell center will determine if a point exists instide a surface. | |
| integer function | f_intersects_triangle (ray, triangle) |
| This procedure checks if a ray intersects a triangle. | |
| subroutine, public | s_check_boundary (model, boundary_v, boundary_vertex_count, boundary_edge_count) |
| This procedure checks and labels edges shared by two or more triangles facets of the 2D STL model. | |
| subroutine, public | s_register_edge (temp_boundary_v, edge, edge_index, edge_count) |
| This procedure appends the edge end vertices to a temporary buffer. | |
| subroutine, public | s_distance_normals_3d (ntrs, pid, point, normals, distance) |
| This procedure determines the levelset distance and normals of 3D models by computing the exact closest point via projection onto triangle surfaces. | |
| subroutine, public | s_distance_normals_2d (pid, boundary_edge_count, point, normals, distance) |
| This procedure determines the levelset distance and normals of 2D models by computing the exact closest point via projection onto boundary edges. | |
| subroutine, public | s_instantiate_stl_models () |
| subroutine, public | s_pack_model_for_gpu (ma) |
Variables | |
| type(t_model_array), dimension(:), allocatable, target, public | models |
| integer, dimension(:), allocatable, public | gpu_ntrs |
| real(wp), dimension(:, :, :, :), allocatable, public | gpu_trs_v |
| real(wp), dimension(:, :, :), allocatable, public | gpu_trs_n |
| real(wp), dimension(:, :, :, :), allocatable, public | gpu_boundary_v |
| integer, dimension(:), allocatable, public | gpu_boundary_edge_count |
| integer, dimension(:), allocatable, public | gpu_total_vertices |
| real(wp), dimension(:, :, :), allocatable, public | stl_bounding_boxes |
Binary STL file reader and processor for immersed boundary geometry.
|
private |
This procedure checks if a ray intersects a triangle.
| ray | Ray. |
| triangle | Triangle. |
Definition at line 956 of file m_model.fpp.f90.
| impure real(wp) function, public m_model::f_model_is_inside | ( | type(t_model), intent(in) | model, |
| real(wp), dimension(1:3), intent(in) | point, | ||
| real(wp), dimension(1:3), intent(in) | spacing, | ||
| integer, intent(in) | spc ) |
This procedure, recursively, finds whether a point is inside an octree.
| model | Model to search in. |
| point | Point to test. |
| spacing | Space around the point to search in (grid spacing). |
| spc | Number of samples per cell. |
Definition at line 825 of file m_model.fpp.f90.
| real(wp) function, public m_model::f_model_is_inside_flat | ( | integer, intent(in) | ntrs, |
| integer, intent(in) | pid, | ||
| real(wp), dimension(1:3), intent(in) | point ) |
This procedure, given a cell center will determine if a point exists instide a surface.
| ntrs | Number of triangles in the model |
| pid | Patch ID od this model |
| point | Point to test. |
Definition at line 887 of file m_model.fpp.f90.
|
private |
This function is used to replace the fortran random number generator because the native generator is not compatible being called from GPU routines/functions.
Definition at line 805 of file m_model.fpp.f90.
| impure type(t_model) function, public m_model::f_model_read | ( | character(len=*), intent(in) | filepath | ) |
This procedure reads a mesh from a file.
| filepath | Path to the file to read. |
Definition at line 618 of file m_model.fpp.f90.
|
private |
| subroutine, public m_model::s_check_boundary | ( | type(t_model), intent(in) | model, |
| real(wp), dimension(:, :, :), intent(out), allocatable | boundary_v, | ||
| integer, intent(out) | boundary_vertex_count, | ||
| integer, intent(out) | boundary_edge_count ) |
This procedure checks and labels edges shared by two or more triangles facets of the 2D STL model.
| model | Model to search in. | |
| boundary_vertex_count | Output total boundary vertex count | |
| [out] | boundary_v | Output boundary vertices/normals |
| [out] | boundary_edge_count | Output boundary vertex/edge count |
Definition at line 1025 of file m_model.fpp.f90.
| subroutine, public m_model::s_distance_normals_2d | ( | integer, intent(in) | pid, |
| integer, intent(in) | boundary_edge_count, | ||
| real(wp), dimension(1:3), intent(in) | point, | ||
| real(wp), dimension(1:3), intent(out) | normals, | ||
| real(wp), intent(out) | distance ) |
This procedure determines the levelset distance and normals of 2D models by computing the exact closest point via projection onto boundary edges.
| boundary_v | Flat GPU array of boundary vertices/normals for all patches |
| pid | Patch index into the boundary_v array |
| boundary_edge_count | Total number of boundary edges for this patch |
| point | The cell center of the current levelset cell |
| normals | Output levelset normals |
| distance | Output levelset distance |
Definition at line 1366 of file m_model.fpp.f90.
| subroutine, public m_model::s_distance_normals_3d | ( | integer, intent(in) | ntrs, |
| integer, intent(in) | pid, | ||
| real(wp), dimension(1:3), intent(in) | point, | ||
| real(wp), dimension(1:3), intent(out) | normals, | ||
| real(wp), intent(out) | distance ) |
This procedure determines the levelset distance and normals of 3D models by computing the exact closest point via projection onto triangle surfaces.
| ntrs | Number of triangles for this patch |
| trs_v | Flat GPU array of triangle vertices for all patches |
| trs_n | Flat GPU array of triangle normals for all patches |
| pid | Patch index into the arrays |
| point | The cell center of the current levelset cell |
| normals | Output levelset normals |
| distance | Output levelset distance |
Definition at line 1209 of file m_model.fpp.f90.
| subroutine, public m_model::s_instantiate_stl_models |
| subroutine, public m_model::s_model_free | ( | type(t_model), intent(inout) | model | ) |
This procedure frees the memory allocated for an STL mesh.
Definition at line 746 of file m_model.fpp.f90.
| impure subroutine, public m_model::s_model_write | ( | character(len=*), intent(in) | filepath, |
| type(t_model), intent(in) | model ) |
This procedure writes a binary STL file.
| filepath | Path to the file to write. |
| model | Model to write. |
Definition at line 727 of file m_model.fpp.f90.
| subroutine, public m_model::s_pack_model_for_gpu | ( | type(t_model_array), intent(inout) | ma | ) |
|
private |
This procedure reads an OBJ file.
| filepath | Path to the odj file. |
| model | The obj file. |
Definition at line 542 of file m_model.fpp.f90.
|
private |
This procedure reads an STL file.
| filepath | Path to the STL file. |
| model | the STL file. |
Definition at line 508 of file m_model.fpp.f90.
|
private |
This procedure reads an ASCII STL file.
| filepath | Path to the STL file. |
| model | the STL file. |
Definition at line 397 of file m_model.fpp.f90.
|
private |
This procedure reads a binary STL file.
| filepath | Path to the STL file. |
| model | The binary of the STL file. |
Definition at line 346 of file m_model.fpp.f90.
| subroutine, public m_model::s_register_edge | ( | real(wp), dimension(1:edge_count, 1:2, 1:2), intent(inout) | temp_boundary_v, |
| real(wp), dimension(1:2, 1:2), intent(in) | edge, | ||
| integer, intent(inout) | edge_index, | ||
| integer, intent(inout) | edge_count ) |
This procedure appends the edge end vertices to a temporary buffer.
| [in,out] | edge_index | Edge index iterator |
| [in,out] | edge_count | Total number of edges |
| [in] | edge | Edges end points to be registered |
| [in,out] | temp_boundary_v | Temporary edge end vertex buffer |
Definition at line 1186 of file m_model.fpp.f90.
|
private |
Reads the next non-comment line from a model file, using a buffered look-ahead mechanism.
Definition at line 784 of file m_model.fpp.f90.
|
private |
This procedure writes an OBJ file.
| filepath | Path to the obj file. |
| model | obj to write. |
Definition at line 690 of file m_model.fpp.f90.
|
private |
This procedure writes a binary STL file.
| filepath | Path to the STL file. |
| model | STL to write |
Definition at line 640 of file m_model.fpp.f90.
| integer, dimension(:), allocatable, public m_model::gpu_boundary_edge_count |
Definition at line 326 of file m_model.fpp.f90.
| real(wp), dimension(:, :, :, :), allocatable, public m_model::gpu_boundary_v |
Definition at line 325 of file m_model.fpp.f90.
| integer, dimension(:), allocatable, public m_model::gpu_ntrs |
Definition at line 322 of file m_model.fpp.f90.
| integer, dimension(:), allocatable, public m_model::gpu_total_vertices |
Definition at line 327 of file m_model.fpp.f90.
| real(wp), dimension(:, :, :), allocatable, public m_model::gpu_trs_n |
Definition at line 324 of file m_model.fpp.f90.
| real(wp), dimension(:, :, :, :), allocatable, public m_model::gpu_trs_v |
Definition at line 323 of file m_model.fpp.f90.
| type(t_model_array), dimension(:), allocatable, target, public m_model::models |
Definition at line 320 of file m_model.fpp.f90.
| real(wp), dimension(:, :, :), allocatable, public m_model::stl_bounding_boxes |
Definition at line 328 of file m_model.fpp.f90.