9 #define CHECK(a) if (ierr .ne. 0) print *, a
15 #include "moab/MOABConfig.h"
18 # include "iMeshP_f.h"
25 SUBROUTINE update_tracer ( instance , opEulerSet, ierr)
bind(C)
28 imesh_instance,
INTENT(IN) ,
VALUE :: instance
29 ibase_entitysethandle,
INTENT(IN),
VALUE :: opeulerset
30 integer(c_int) ,
INTENT (OUT) :: ierr
40 ibase_entityhandle,
pointer :: cells(:)
41 INTEGER ents_alloc, ents_size
43 ibase_entitysethandle root_set
44 ibase_entitysethandle opeulerset
45 CHARACTER (LEN=200) options
46 CHARACTER (LEN=200) filename
47 CHARACTER (LEN=200) optionswrite
48 CHARACTER (LEN=200) outname
51 integer rank, sz, ierr
52 integer lenopt, lenname
57 imeshp_partitionhandle imeshp
58 ibase_handle_t mpi_comm_c
63 check(
"fail to initialize MPI")
64 call mpi_comm_size(mpi_comm_world, sz, ierr)
65 check(
"fail to get MPI size")
66 call mpi_comm_rank(mpi_comm_world, rank, ierr)
67 check(
"fail to get MPI rank")
72 call imesh_newmesh(
"MOAB", imesh, ierr)
73 check(
"fail to initialize imesh")
75 call imesh_getrootset(%VAL(imesh), root_set, ierr)
76 check(
"fail to get root set")
78 call imeshp_getcommunicator(%VAL(imesh), mpi_comm_world, mpi_comm_c, ierr)
80 call imeshp_createpartitionall(%VAL(imesh), %VAL(mpi_comm_c), imeshp, ierr)
81 check(
"fail to create parallel partition ")
82 options =
" moab:PARALLEL=READ_PART moab:PARTITION=PARALLEL_PARTITION" // &
83 " moab:PARALLEL_RESOLVE_SHARED_ENTS moab:PARTITION_DISTRIBUTE "
87 print *,
"load in parallel file HN16DP.h5m"
91 filename =
"HN16DP.h5m"
92 call imeshp_loadall(%VAL(imesh), &
100 check(
"fail to load mesh in parallel ")
103 call imesh_createentset(%VAL(imesh), %VAL(islist), opeulerset, ierr)
104 check(
"fail to create euler set ")
109 call imesh_getentities(%VAL(imesh),%VAL(root_set), &
111 %VAL(imesh_all_topologies), cells_ptr, &
112 ents_alloc, ents_size, ierr);
113 check(
"fail to get 2d entities ")
115 call c_f_pointer(cells_ptr, cells, [ents_size])
117 call imesh_addentarrtoset(%VAL(imesh), cells, %VAL(ents_size), &
118 %VAL(opeulerset), ierr)
121 check(
"fail to update tracer ")
123 outname =
"outF.h5m";
124 optionswrite =
" moab:PARALLEL=WRITE_PART " ;
127 call imeshp_saveall( %VAL(imesh), &
135 check(
" can't save ")
141 call mpi_finalize(ierr)