29   real(kind=kind_real),
allocatable :: lon(:)
    30   real(kind=kind_real),
allocatable :: lat(:)
    31   real(kind=kind_real),
allocatable :: area(:)
    32   real(kind=kind_real), 
allocatable :: vunit(:,:)
    33   logical,
allocatable :: lmask(:,:)
    34   real(kind=kind_real),
allocatable :: fld(:,:,:,:)
    45 #define LISTED_TYPE unstructured_grid    48 #include "oops/util/linkedList_i.f"    58 #include "oops/util/linkedList_c.f"    64 subroutine create_ug_c(key) bind(c, name='create_ug_f90')
    66 integer(c_int), 
intent(inout) :: key
    75 subroutine delete_ug_c(key) bind(c, name='delete_ug_f90')
    77 integer(c_int), 
intent(inout) :: key
    79 type(unstructured_grid), 
pointer :: self
    96    if (.not.
allocated(self%grid(igrid)%lon)) 
allocate(self%grid(igrid)%lon(self%grid(igrid)%nmga))
    97    if (.not.
allocated(self%grid(igrid)%lat)) 
allocate(self%grid(igrid)%lat(self%grid(igrid)%nmga))
    98    if (.not.
allocated(self%grid(igrid)%area)) 
allocate(self%grid(igrid)%area(self%grid(igrid)%nmga))
    99    if (.not.
allocated(self%grid(igrid)%vunit)) 
allocate(self%grid(igrid)%vunit(self%grid(igrid)%nmga,self%grid(igrid)%nl0))
   100    if (.not.
allocated(self%grid(igrid)%lmask)) 
allocate(self%grid(igrid)%lmask(self%grid(igrid)%nmga,self%grid(igrid)%nl0))
   113 do igrid=1,self%ngrid
   114    if (.not.
allocated(self%grid(igrid)%fld)) 
allocate(self%grid(igrid)%fld(self%grid(igrid)%nmga,self%grid(igrid)%nl0, &
   115  & self%grid(igrid)%nv,self%grid(igrid)%nts))
   128 if (
allocated(self%grid)) 
then   129    do igrid=1,self%ngrid
   130       if (
allocated(self%grid(igrid)%lon)) 
deallocate(self%grid(igrid)%lon)
   131       if (
allocated(self%grid(igrid)%lat)) 
deallocate(self%grid(igrid)%lat)
   132       if (
allocated(self%grid(igrid)%area)) 
deallocate(self%grid(igrid)%area)
   133       if (
allocated(self%grid(igrid)%vunit)) 
deallocate(self%grid(igrid)%vunit)
   134       if (
allocated(self%grid(igrid)%lmask)) 
deallocate(self%grid(igrid)%lmask)
   135       if (
allocated(self%grid(igrid)%fld)) 
deallocate(self%grid(igrid)%fld)
   137    deallocate(self%grid)
 subroutine, public allocate_unstructured_grid_coord(self)
subroutine create_ug_c(key)
Linked list implementation. 
subroutine delete_ug_c(key)
subroutine, public allocate_unstructured_grid_field(self)
type(registry_t), public unstructured_grid_registry
Linked list interface - defines registry_t type. 
Fortran module for handling generic unstructured grid. 
subroutine, public delete_unstructured_grid(self)
Derived type containing the data.