Append a layer id parsed from athena_gnn_node_
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
Metadata key potentially containing a layer id |
||
| integer, | intent(inout), | allocatable | :: | ids(:) |
Unique set of discovered layer ids |
subroutine append_unique_layer_id_from_meta_key(meta_key, ids) !! Append a layer id parsed from athena_gnn_node_<id> or !! athena_nop_node_<id> if not already present. implicit none ! Arguments character(*), intent(in) :: meta_key !! Metadata key potentially containing a layer id integer, allocatable, intent(inout) :: ids(:) !! Unique set of discovered layer ids ! Local variables integer :: layer_id, pos, stat, i !! Parsed id, prefix position, read status and loop index character(128) :: rest !! Metadata suffix containing the candidate id logical :: exists !! Whether the id already exists in ids pos = index(trim(meta_key), 'athena_gnn_node_') if(pos .eq. 0) pos = index(trim(meta_key), 'athena_nop_node_') if(pos .eq. 0) return rest = adjustl(trim(meta_key(pos+16:))) read(rest, *, iostat=stat) layer_id if(stat .ne. 0) return exists = .false. do i = 1, size(ids) if(ids(i) .eq. layer_id)then exists = .true. exit end if end do if(.not.exists) ids = [ids, layer_id] end subroutine append_unique_layer_id_from_meta_key