00001 00002 include 'idxlf.h' 00003 00004 integer, parameter :: FEM_BYTE=IDXL_BYTE 00005 integer, parameter :: FEM_INT=IDXL_INT 00006 integer, parameter :: FEM_REAL=IDXL_REAL 00007 integer, parameter :: FEM_DOUBLE=IDXL_DOUBLE 00008 00009 integer, parameter :: FEM_SUM=IDXL_SUM 00010 integer, parameter :: FEM_PROD=IDXL_PROD 00011 integer, parameter :: FEM_MAX=IDXL_MAX 00012 integer, parameter :: FEM_MIN=IDXL_MIN 00013 00014 integer, parameter :: FEM_MESH_OUTPUT=0 00015 integer, parameter :: FEM_MESH_UPDATE=1 00016 integer, parameter :: FEM_MESH_FINALIZE=2 00017 00018 integer, parameter :: FEM_TRIANGULAR=3 00019 integer, parameter :: FEM_TETRAHEDRAL=4 00020 integer, parameter :: FEM_HEXAHEDRAL=8 00021 integer, parameter :: FEM_QUADRILATERAL=4 00022 00023 integer, parameter :: FEM_ENTITY_FIRST=1610000000 00024 integer, parameter :: FEM_NODE=(FEM_ENTITY_FIRST+0) 00025 integer, parameter :: FEM_ELEM=(FEM_ENTITY_FIRST+1000) 00026 integer, parameter :: FEM_ELEMENT=FEM_ELEM 00027 integer, parameter :: FEM_SPARSE=(FEM_ENTITY_FIRST+2000) 00028 integer, parameter :: FEM_EDGE=FEM_SPARSE 00029 integer, parameter :: FEM_FACE=FEM_SPARSE 00030 integer, parameter :: FEM_GHOST=10000 00031 00032 integer, parameter :: FEM_DATA=0 00033 integer, parameter :: FEM_ATTRIB_TAG_MAX=1000000000 00034 integer, parameter :: FEM_ATTRIB_FIRST=1620000000 00035 integer, parameter :: FEM_CONN=(FEM_ATTRIB_FIRST+1) 00036 integer, parameter :: FEM_CONNECTIVITY=FEM_CONN 00037 integer, parameter :: FEM_SPARSE_ELEM=(FEM_ATTRIB_FIRST+2) 00038 integer, parameter :: FEM_COOR=(FEM_ATTRIB_FIRST+3) 00039 integer, parameter :: FEM_COORD=FEM_COOR 00040 integer, parameter :: FEM_COORDINATES=FEM_COOR 00041 integer, parameter :: FEM_GLOBALNO=(FEM_ATTRIB_FIRST+4) 00042 integer, parameter :: FEM_PARTITION=(FEM_ATTRIB_FIRST+5) 00043 integer, parameter :: FEM_SYMMETRIES=(FEM_ATTRIB_FIRST+6) 00044 integer, parameter :: FEM_NODE_PRIMARY=(FEM_ATTRIB_FIRST+7) 00045 integer, parameter :: FEM_CHUNK=(FEM_ATTRIB_FIRST+8) 00046 integer, parameter :: FEM_BOUNDARY=(FEM_ATTRIB_FIRST+9) 00047 integer, parameter :: FEM_NODE_ELEM_ADJACENCY=(FEM_ATTRIB_FIRST+10) 00048 integer, parameter :: FEM_NODE_NODE_ADJACENCY=(FEM_ATTRIB_FIRST+11) 00049 integer, parameter :: FEM_ELEM_ELEM_ADJACENCY=(FEM_ATTRIB_FIRST+12) 00050 integer, parameter :: FEM_ELEM_ELEM_ADJ_TYPES=(FEM_ATTRIB_FIRST+13) 00051 ! integer, parameter :: FEM_IS_VALID_ATTR=(FEM_ATTRIB_FIRST+14) 00052 integer, parameter :: FEM_MESH_SIZING=(FEM_ATTRIB_FIRST+15) 00053 integer, parameter :: FEM_ADAPT_FACE_ADJ=(FEM_ATTRIB_FIRST+16) 00054 integer, parameter :: FEM_ADAPT_EDGE_ADJ=(FEM_ATTRIB_FIRST+17) 00055 00056 integer, parameter :: FEM_INDEX_0=IDXL_INDEX_0 00057 integer, parameter :: FEM_INDEX_1=IDXL_INDEX_1 00058 00059 00060 external FEM_Print 00061 00062 external FEM_Mesh_set_conn 00063 external FEM_Mesh_get_conn 00064 external FEM_Mesh_conn 00065 external FEM_Mesh_set_data 00066 external FEM_Mesh_get_data 00067 external FEM_Mesh_data 00068 external FEM_Mesh_data_layout 00069 external FEM_Mesh_data_offset 00070 external FEM_Mesh_pup 00071 00072 external FEM_Set_mesh 00073 00074 external FEM_Set_node 00075 external FEM_Get_node 00076 external FEM_Set_elem 00077 external FEM_Get_elem 00078 external FEM_Set_elem_conn_r 00079 external FEM_Get_elem_conn_r 00080 external FEM_Set_node_data_r 00081 external FEM_Get_node_data_r 00082 external FEM_Set_elem_data_r 00083 external FEM_Get_elem_data_r 00084 00085 external FEM_Set_sparse 00086 external FEM_Set_sparse_elem 00087 external FEM_Get_sparse 00088 00089 external FEM_Add_linear_periodicity 00090 external FEM_Sym_coordinates 00091 00092 external FEM_Set_sym_nodes 00093 external FEM_Get_sym 00094 00095 external FEM_Set_partition 00096 00097 external FEM_Add_ghost_layer 00098 external FEM_Add_ghost_elem 00099 external FEM_Add_ghost_stencil 00100 external FEM_Add_ghost_stencil_type 00101 00102 external FEM_Get_Comm_Nodes 00103 00104 external FEM_Reduce_field 00105 external FEM_Reduce 00106 external FEM_Update_field 00107 external FEM_Update_ghost_field 00108 external FEM_Read_field 00109 integer, external :: foffsetof 00110 00111 external FEM_Barrier 00112 external FEM_Get_ghost_list 00113 00114 integer, external :: FEM_Register 00115 external FEM_Migrate 00116 external FEM_Async_Migrate 00117 00118 external FEM_Update_mesh 00119 00120 external FEM_Add_elem2face_tuples 00121 00122 external FEM_Mesh_Become_Setting 00123 external FEM_Mesh_Become_Getting 00124 00125 interface 00126 00127 subroutine FEM_Init(comm) 00128 integer,intent(in) :: comm 00129 end subroutine 00130 integer function FEM_My_partition() 00131 end function 00132 integer function FEM_Num_partitions() 00133 end function 00134 double precision function FEM_Timer() 00135 end function 00136 subroutine FEM_Done() 00137 end subroutine 00138 subroutine FEM_Print_partition() 00139 end subroutine 00140 subroutine FEM_Mesh_print(mesh) 00141 integer, intent(in) :: mesh 00142 end subroutine 00143 00144 integer function FEM_Mesh_allocate() 00145 end function 00146 integer function FEM_Mesh_copy(mesh) 00147 integer, intent(in) :: mesh 00148 end function 00149 subroutine FEM_Mesh_deallocate(mesh) 00150 integer, intent(in) :: mesh 00151 end subroutine 00152 00153 integer function FEM_Mesh_read(prefix,partNo,nParts) 00154 integer, intent(in) :: partNo,nParts 00155 character (LEN=*), intent(in) :: prefix 00156 end function 00157 subroutine FEM_Mesh_write(mesh,prefix,partNo,nParts) 00158 integer, intent(in) :: mesh 00159 integer, intent(in) :: partNo,nParts 00160 character (LEN=*), intent(in) :: prefix 00161 end subroutine 00162 00163 integer function FEM_Mesh_assemble(nParts,parts) 00164 integer, intent(in) :: nParts 00165 integer, intent(in) :: parts(nParts) 00166 end function 00167 subroutine FEM_Mesh_partition(mesh,nParts,parts) 00168 integer, intent(in) :: mesh 00169 integer, intent(in) :: nParts 00170 integer, intent(out) :: parts(nParts) 00171 end subroutine 00172 00173 integer function FEM_Mesh_recv(source,tag,comm) 00174 integer, intent(in) :: source,tag,comm 00175 end function 00176 subroutine FEM_Mesh_send(mesh,source,tag,comm) 00177 integer, intent(in) :: mesh 00178 integer, intent(in) :: source,tag,comm 00179 end subroutine 00180 00181 integer function FEM_Mesh_reduce(mesh,master,comm) 00182 integer, intent(in) :: mesh 00183 integer, intent(in) :: master,comm 00184 end function 00185 integer function FEM_Mesh_broadcast(mesh,master,comm) 00186 integer, intent(in) :: mesh 00187 integer, intent(in) :: master,comm 00188 end function 00189 00190 00191 integer function FEM_Mesh_default_read() 00192 end function 00193 integer function FEM_Mesh_default_write() 00194 end function 00195 subroutine FEM_Mesh_set_default_read(mesh) 00196 integer, intent(in) :: mesh 00197 end subroutine 00198 subroutine FEM_Mesh_set_default_write(mesh) 00199 integer, intent(in) :: mesh 00200 end subroutine 00201 00202 function FEM_Mesh_get_length(mesh,ent) 00203 integer, intent(in) :: mesh,ent 00204 integer :: FEM_Mesh_get_length 00205 end function 00206 subroutine FEM_Mesh_set_length(mesh,ent,newLength) 00207 integer, intent(in) :: mesh,ent,newLength 00208 end subroutine 00209 function FEM_Mesh_get_width(mesh,ent,attr) 00210 integer, intent(in) :: mesh,ent,attr 00211 integer :: FEM_Mesh_get_width 00212 end function 00213 subroutine FEM_Mesh_set_width(mesh,ent,attr,newWidth) 00214 integer, intent(in) :: mesh,ent,attr,newWidth 00215 end subroutine 00216 function FEM_Mesh_get_datatype(mesh,ent,attr) 00217 integer, intent(in) :: mesh,ent,attr 00218 integer :: FEM_Mesh_get_datatype 00219 end function 00220 00221 integer function FEM_Mesh_get_entities(mesh,entities) 00222 integer, intent(in) :: mesh 00223 integer, intent(out) :: entities(:) 00224 end function 00225 integer function FEM_Mesh_get_attributes(mesh,entity,attrs) 00226 integer, intent(in) :: mesh, entity 00227 integer, intent(out) :: attrs(:) 00228 end function 00229 00230 00231 function FEM_Create_simple_field(base_type, vec_len) 00232 integer, intent(in) :: base_type, vec_len 00233 integer :: FEM_Create_Simple_Field 00234 end function 00235 00236 function FEM_Create_field(base_type, vec_len, init_offset, distance) 00237 integer, intent(in) :: base_type, vec_len, init_offset, distance 00238 integer :: FEM_Create_Field 00239 end function 00240 00241 function FEM_Comm_shared(mesh,ent) 00242 integer, intent(in) :: mesh,ent 00243 integer :: FEM_Comm_shared 00244 end function 00245 function FEM_Comm_ghost(mesh,ent) 00246 integer, intent(in) :: mesh,ent 00247 integer :: FEM_Comm_ghost 00248 end function 00249 00250 function FEM_Get_node_ghost() 00251 integer :: FEM_Get_node_ghost 00252 end function 00253 function FEM_Get_elem_ghost(elemType) 00254 integer, intent(in) :: elemType 00255 integer :: FEM_Get_elem_ghost 00256 end function 00257 00258 subroutine FEM_Exchange_ghost_lists(elemType,nIdx,localIdx) 00259 integer,intent (in) :: elemType,nIdx 00260 integer, intent(in) :: localIdx(nIdx) 00261 end subroutine 00262 00263 function FEM_Get_ghost_list_length() 00264 integer :: FEM_Get_ghost_list_length 00265 end function 00266 00267 function FEM_Get_sparse_length(sID) 00268 integer :: FEM_Get_sparse_length 00269 integer, intent(in) ::sID 00270 end function 00271 00272 subroutine FEM_Serial_split(nChunk) 00273 integer,intent (in) :: nChunk 00274 end subroutine 00275 subroutine FEM_Serial_begin(chunk) 00276 integer,intent (in) :: chunk 00277 end subroutine 00278 subroutine FEM_Serial_read(chunk,nChunks) 00279 integer,intent (in) :: chunk,nChunks 00280 end subroutine 00281 subroutine FEM_Serial_assemble() 00282 end subroutine 00283 00284 function FEM_Get_comm_partners() 00285 integer :: FEM_Get_comm_partners 00286 end function 00287 function FEM_Get_comm_partner(partnerNo) 00288 integer, intent(in) :: partnerNo 00289 integer :: FEM_Get_comm_partner 00290 end function 00291 function FEM_Get_comm_count(partnerNo) 00292 integer, intent(in) :: partnerNo 00293 integer :: FEM_Get_comm_count 00294 end function 00295 00296 subroutine FEM_Get_roccom_pconn_size(mesh,total_len,ghost_len) 00297 integer, intent(in) :: mesh 00298 integer, intent(out) :: total_len,ghost_len 00299 end subroutine 00300 00301 00302 subroutine FEM_Mesh_create_node_elem_adjacency(fem_mesh) 00303 integer, intent(in) :: fem_mesh 00304 end subroutine 00305 00306 subroutine FEM_Mesh_create_node_node_adjacency(fem_mesh) 00307 integer, intent(in) :: fem_mesh 00308 end subroutine 00309 00310 subroutine FEM_Mesh_create_elem_elem_adjacency(fem_mesh) 00311 integer, intent(in) :: fem_mesh 00312 end subroutine 00313 00314 subroutine FEM_Mesh_get2ElementsOnEdge(fem_mesh,n1,n2,e1,e2) 00315 integer, intent(in) :: fem_mesh, n1, n2 00316 integer, intent(out) :: e1, e2 00317 end subroutine 00318 00319 subroutine FEM_Mesh_get2ElementsOnEdgeSorted(fem_mesh,n1,n2,e1,e2) 00320 integer, intent(in) :: fem_mesh, n1, n2 00321 integer, intent(out) :: e1, e2 00322 end subroutine 00323 00324 00325 subroutine FEM_Mesh_allocate_valid_attr(fem_mesh, entity_type) 00326 integer, intent(in) :: fem_mesh, entity_type 00327 end subroutine 00328 00329 integer function FEM_is_valid(fem_mesh,entityType,entityIdx) 00330 integer, intent(in) :: fem_mesh, entityType, entityIdx 00331 end function 00332 00333 integer function FEM_count_valid(fem_mesh,entityType,entityIdx) 00334 integer, intent(in) :: fem_mesh, entityType, entityIdx 00335 end function 00336 00337 integer function FEM_is_node_shared(fem_mesh, idx) 00338 integer, intent(in) :: fem_mesh, idx 00339 end function 00340 00341 integer function FEM_find_node_owner(fem_mesh, idx) 00342 integer, intent(in) :: fem_mesh, idx 00343 end function 00344 00345 subroutine FEM_traceBegin() 00346 end subroutine 00347 00348 subroutine FEM_traceEnd() 00349 end subroutine 00350 00351 00352 00353 end interface 00354