MOAB: Mesh Oriented datABase  (version 5.4.1)
TagIterateF.F
Go to the documentation of this file.
00001 c TagIterate: Get a pointer to tag memory and interact directly with that 
00002 c 
00003 c This program shows how to get a pointer to tag memory and assign it to
00004 c a fortran array, allowing an application to bypass the API and/or share
00005 c memory with MOAB.
00006 
00007 c Usage: TagIterate <mesh_filename>
00008 
00009       program tag_iterate
00010 #include "iMesh_f.h"
00011 
00012 c declarations
00013       iMesh_Instance mesh
00014       iBase_EntityHandle root_set
00015       iBase_EntityArrIterator iter
00016       iBase_TagHandle tagh
00017       IBASE_HANDLE_T rpents, ents, rpdata
00018       real*8 tag_data
00019       pointer (rpdata, tag_data(0:*))
00020       pointer (rpents, ents(0:*))
00021       pointer (ipoffsets, ioffsets(0,*))
00022       integer ierr, ents_alloc, ents_size, num_regions, atend, count
00023 
00024 c create the Mesh instance
00025       call iMesh_newMesh("MOAB", mesh, ierr)
00026 
00027 c get the root set
00028       call iMesh_getRootSet(%VAL(mesh), root_set, ierr)
00029 
00030 c load the mesh
00031       call iMesh_load(%VAL(mesh), %VAL(root_set), "125hex.vtk", "",ierr)
00032 
00033 c get the number of regions
00034       call iMesh_getNumOfType(%VAL(mesh), %VAL(root_set), 
00035      1 %VAL(iBase_REGION), num_regions, ierr)
00036 
00037 c get an iterator over regions
00038       call iMesh_initEntArrIter(%VAL(mesh), %VAL(root_set), 
00039      1 %VAL(iBase_REGION), %VAL(iMesh_ALL_TOPOLOGIES),%VAL(num_regions),
00040      1 %VAL(0), iter, ierr) 
00041 
00042 c create a tag to put on the regions
00043       call iMesh_createTagWithOptions(%VAL(mesh), "dumtag", 
00044      1 "moab:TAG_STORAGE_TYPE=DENSE moab:TAG_DEFAULT_VALUE=0.0", 
00045      1 %VAL(1), %VAL(iBase_DOUBLE), tagh, ierr)
00046 
00047 c iterate over tag memory
00048  10   call iMesh_tagIterate(%VAL(mesh), %VAL(tagh), %VAL(iter), 
00049      1     rpdata, count, ierr)
00050     
00051 c step the iterator over count entities
00052       call iMesh_stepEntArrIter(%VAL(mesh), %VAL(iter), %VAL(count), 
00053      1     atend, ierr)
00054 
00055       if (atend .eq. 0) go to 10
00056 
00057 
00058       call iMesh_dtor(%VAL(mesh), ierr)
00059 
00060       end
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines