Download Latest Version geomlib.tar.gz (58.3 kB)
Email in envelope

Get an email when there's a new version of CFD Utilities

Home / triangulation_io
Name Modified Size InfoDownloads / Week
Parent folder
README 2022-08-24 5.7 kB
triangulation_io.f90 2022-08-24 155.6 kB
Totals: 2 Items   161.3 kB 0
Module triangulation_io packages I/O for unstructured surface or volume
datasets in 3-space.  For surface datasets, two types of Tecplot format
are supported: triangulations with optional function values that are
either vertex-centered or cell-centered.  Hooks appear for binary Tecplot
files, but only ASCII files may be read or written presently.

   public :: tri_read               ! Read  an entire unstructured surface
   public :: tri_write              ! Write an entire unstructured surface

   public :: tri_header_read        ! Read  an unstructured surface header
   public :: tri_header_write       ! Write fn unstructured surface header
   public :: tri_zone_allocate      ! Allocate the arrays for one surface zone
   public :: tri_zone_read          ! Read  one zone of a surface dataset
   public :: tri_zone_write         ! Write one zone of a surface dataset

   public :: deallocate_tri_zones   ! Deallocate arrays of indicated zones

   public :: tri_data_range         ! x/y/z data ranges over all surface zones
   public :: tri_area               ! Total wetted area over all surface zones
   public :: tri_volume             ! Total volume enclosed by surface zone(s)
   public :: tri_center_of_mass     ! CM of all surface zones (and of each zone)
   public :: tri_moments_of_inertia ! Surf. moments of inertia about Ox/y/z
   public :: tri_apply_rotation_R   ! Apply matrix from tri_moments_of_inertia
   public :: tri_zone_data_range    ! x/y/z data ranges for one surface zone
   public :: tri_zone_area          ! Total wetted area of a triangulated zone
   public :: tri_zone_volume        ! Volume def. by surface zone & interior pt.
   public :: tri_zone_center_of_mass! CM of surf. zone + cell centroids & areas

!  Analogous utilities for volume meshes (tets or hexahedra);
!  some can use the tri* utility directly, but this avoids confusion:

   public :: vol_read               ! Read  an entire unstructured volume
   public :: vol_write              ! Write an entire unstructured volume

   public :: vol_get_element_type   ! Read enough of a surf|vol to determine ET
   public :: vol_header_read        ! Read  unstructured volume dataset header
   public :: vol_header_write       ! Write unstructured volume dataset header
   public :: vol_zone_allocate      ! Allocate arrays for a zone of volume
   public :: vol_zone_read          ! Read  one zone of an unstructured volume
   public :: vol_zone_write         ! Write one zone of an unstructured volume

   public :: deallocate_vol_zones   ! Deallocate arrays of the indicated zone(s)

   public :: vol_data_range         ! Compute x/y/z data ranges over all zones
   public :: vol_volume             ! Total volume of all elements of all zones
   public :: vol_center_of_mass     ! CM of all vol. zones (and of each zone)
   public :: vol_moments_of_inertia ! Vol. moments of inertia about Ox/y/z
   public :: vol_apply_rotation_R   ! Applies matrix from vol_moments_of_inertia
   public :: vol_zone_data_range    ! x/y/z data ranges for one volume zone
   public :: vol_zone_volume        ! Volume of all cells of one volume zone
   public :: vol_zone_center_of_mass! CM of vol. zone + cell centroids & volumes

Two derived data types also appear in triangulation_io.f90:

   tri_header_structure
   tri_zone_structure

See TRI_TO_QUAD, NEQAIR_Integration for sample applications of surface reading.
See TRI_TO_TRI also for reading multiple zones as one for efficient searching,
and HEMISPHERES_OF_SIGHT for writing examples.
See TRIANGULATION_TOOL for driving recently-added geometric operations.

07/21/18 ADT searching of multizone triangulations (or unstructured volumes)
         requires a way of assembling all zones as one list of all elements.
         Subroutine tri_read now has this option, via new header fields
         %combine_zones, %conn, %xyz and %f.  If function values are cell-
         centered, they will be area-averaged to the vertices for ADT use.
07/23/18 Tri_read now has an independent option to convert centroid function
         values to vertices via new header field, %centroids_to_vertices.
07/26/18 Tecplot won't read a one-function line VARLOCATION=([4-4]=CELLCENTERED)
         written by tri_zone_write.  Instead, it expects the form
         VARLOCATION=([4]=CELLCENTERED). Thanks to Jeff Hill for thinking of this.
04/04/22 Fixed glitches in the run-time formatting of BLOCK order output.  Added zone%zone_type, which has an
         obscure overlap with %element_type.
04/10/22 %combine_zones and %centroids_to_vertices now work during the reading of volume datasets as for surface
         datasets, including quad surfaces.
04/11/22 Look also for CELLCENTERED in get_element_type now.
04/22/22 Keywords like VARLOCATION=([1-3]=NODAL,[4-17]=CELLCENTERED) need to be preserved for transmitting to
         an output file such as from USREFLECT.
04/27/22 Subroutine tri_zone_read was reading x,y,z,f as a single record in BLOCK mode.  Evidently,
         f is a new record.
04/30/22 Subroutine get_element_type was failing to find CELL-CENTERED when it appeared after ZONETYPE.
         Now, the file header and the zone 1 header are scanned for all useful keywords.
05/01/22 Added subroutine reverse_handedness for TRIANGULATION_TOOL to use after a reflection.
08/23/22 A title T="inlet" by chance has ET in it after upcasing, and get_element_type treated it as the
         element type keyword with a bad value.  Work-around: blank any title in the buffer before searching
         for any keyword.


David Saunders, ELORET Corporation/NASA Ames Research Center, CA
                (later with ERC, Inc. and AMA, Inc. at NASA ARC)
Source: README, updated 2022-08-24