The interactive file manager requires Javascript. Please enable it or use sftp or scp.
You may still browse the files here.

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