Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
ScdMeshF77.F
Go to the documentation of this file.
00001 ! MOAB structured mesh extension test
00002 ! 
00003 ! This test also tests fortran free-source format
00004 !
00005 
00006 #define ERROR(rval) if (0 .ne. rval) call exit(1)
00007 
00008       real function reinterpret_ptr(xm, ni, nj, nk)
00009       integer ni, nj, nk
00010       real xm(ni, nj, nk)
00011 
00012       reinterpret_ptr = 0.0
00013       do 10 k = 1, nk
00014          do 10 j = 1, nj
00015             do 10 i = 1, ni
00016                reinterpret_ptr = reinterpret_ptr + xm(i, j, k)
00017  10         continue
00018       return
00019       end 
00020 
00021       program ScdMesh
00022       implicit none
00023       integer comm1, mysize,myproc,ier
00024 #include "iMesh_f.h"
00025       iMesh_Instance mesh
00026       iBase_EntitySetHandle handle
00027       iBase_EntityHandle root_set
00028       iBase_TagHandle tagh
00029       iBase_EntityArrIterator iter
00030       integer local_dims(6),global_dims(6)
00031       integer geom_dim,num_regions, num_verts, num_quads, count
00032       integer*8 rpxm1
00033       integer i
00034       real rsum
00035       !real, dimension(:) :: xm
00036       real xm
00037       pointer (rpxm1, xm(*))
00038       real reinterpret_ptr
00039       
00040       ! declarations
00041       
00042       ! create the Mesh instance
00043       
00044       local_dims(1)=0
00045       local_dims(2)=0
00046       local_dims(3)=-1
00047       local_dims(4)=64
00048       local_dims(5)=64
00049       local_dims(6)=-1
00050       
00051       global_dims(1)=0
00052       global_dims(2)=0
00053       global_dims(3)=-1
00054       global_dims(4)=64
00055       global_dims(5)=64
00056       global_dims(6)=-1
00057       
00058       call iMesh_newMesh('MOAB', mesh, ier)
00059       ERROR(ier)
00060       
00061       handle = 0
00062       call iMesh_createStructuredMesh(%VAL(mesh), local_dims, 
00063      1  global_dims, %VAL(0),%VAL(0),%VAL(0), %VAL(1), %VAL(-1),
00064      1  %VAL(-1), %VAL(-1), %VAL(0), %VAL(1), %VAL(1), handle, ier)
00065       ERROR(ier)
00066 
00067       call iMesh_getRootSet(%VAL(mesh), root_set, ier)
00068       ERROR(ier)
00069       
00070       call iMesh_getGeometricDimension(%VAL(mesh), geom_dim, ier)
00071       ERROR(ier)
00072 
00073       call iMesh_getNumOfType(%VAL(mesh), %VAL(root_set), 
00074      1  %VAL(iBase_FACE), num_quads, ier)
00075       ERROR(ier)
00076       
00077       call iMesh_getNumOfType(%VAL(mesh), %VAL(root_set), 
00078      1  %VAL(iBase_VERTEX), num_verts, ier)
00079       ERROR(ier)
00080       
00081       
00082       call iMesh_initEntArrIter(%VAL(mesh), %VAL(root_set), 
00083      1  %VAL(iBase_FACE), %VAL(iMesh_QUADRILATERAL),%VAL(num_quads), 
00084      1  %VAL(0), iter, ier) 
00085       
00086       call iMesh_createTagWithOptions(%VAL(mesh), "XM1", 
00087      1  "moab:TAG_STORAGE_TYPE=DENSE; moab:TAG_DEFAULT_VALUE=0.0",
00088      1  %VAL(5), %VAL(iBase_DOUBLE), tagh, ier)
00089       
00090       call iMesh_tagIterate(%VAL(mesh),%VAL(tagh),%VAL(iter),rpxm1,
00091      1  count,ier)
00092       
00093       call iMesh_endEntArrIter(%VAL(mesh), %VAL(iter), ier)
00094       ERROR(ier)
00095 
00096       do 20 i = 1, 5*64*64
00097         xm(i) = 1.0
00098  20     continue
00099 
00100       rsum = reinterpret_ptr(xm, 5, 64, 64)
00101 
00102       call iMesh_dtor(%VAL(mesh), ier)
00103       ERROR(ier)
00104 
00105       if (rsum .ne. 5*64*64) call exit(1)
00106       
00107       call exit(0)
00108       end
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines