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_INDEX_0=IDXL_INDEX_0 00054 integer, parameter :: FEM_INDEX_1=IDXL_INDEX_1 00055 00056 00057 external FEM_Print 00058 00059 external FEM_Mesh_set_conn 00060 external FEM_Mesh_get_conn 00061 external FEM_Mesh_conn 00062 external FEM_Mesh_set_data 00063 external FEM_Mesh_get_data 00064 external FEM_Mesh_data 00065 external FEM_Mesh_data_layout 00066 external FEM_Mesh_data_offset 00067 external FEM_Mesh_pup 00068 00069 external FEM_Set_mesh 00070 00071 external FEM_Set_node 00072 external FEM_Get_node 00073 external FEM_Set_elem 00074 external FEM_Get_elem 00075 external FEM_Set_elem_conn_r 00076 external FEM_Get_elem_conn_r 00077 external FEM_Set_node_data_r 00078 external FEM_Get_node_data_r 00079 external FEM_Set_elem_data_r 00080 external FEM_Get_elem_data_r 00081 00082 external FEM_Set_sparse 00083 external FEM_Set_sparse_elem 00084 external FEM_Get_sparse 00085 00086 external FEM_Add_linear_periodicity 00087 external FEM_Sym_coordinates 00088 00089 external FEM_Set_sym_nodes 00090 external FEM_Get_sym 00091 00092 external FEM_Set_partition 00093 00094 external FEM_Add_ghost_layer 00095 external FEM_Add_ghost_elem 00096 external FEM_Add_ghost_stencil 00097 external FEM_Add_ghost_stencil_type 00098 00099 external FEM_Get_Comm_Nodes 00100 00101 external FEM_Reduce_field 00102 external FEM_Reduce 00103 external FEM_Update_field 00104 external FEM_Update_ghost_field 00105 external FEM_Read_field 00106 integer, external :: foffsetof 00107 00108 external FEM_Barrier 00109 external FEM_Get_ghost_list 00110 00111 integer, external :: FEM_Register 00112 external FEM_Migrate 00113 external FEM_Async_Migrate 00114 00115 external FEM_Update_mesh 00116 00117 external FEM_Add_elem2face_tuples 00118 00119 interface 00120 00121 subroutine FEM_Init(comm) 00122 integer,intent(in) :: comm 00123 end subroutine 00124 integer function FEM_My_partition() 00125 end function 00126 integer function FEM_Num_partitions() 00127 end function 00128 double precision function FEM_Timer() 00129 end function 00130 subroutine FEM_Done() 00131 end subroutine 00132 subroutine FEM_Print_partition() 00133 end subroutine 00134 subroutine FEM_Mesh_print(mesh) 00135 integer, intent(in) :: mesh 00136 end subroutine 00137 00138 integer function FEM_Mesh_allocate() 00139 end function 00140 integer function FEM_Mesh_copy(mesh) 00141 integer, intent(in) :: mesh 00142 end function 00143 subroutine FEM_Mesh_deallocate(mesh) 00144 integer, intent(in) :: mesh 00145 end subroutine 00146 00147 integer function FEM_Mesh_read(prefix,partNo,nParts) 00148 integer, intent(in) :: partNo,nParts 00149 character (LEN=*), intent(in) :: prefix 00150 end function 00151 subroutine FEM_Mesh_write(mesh,prefix,partNo,nParts) 00152 integer, intent(in) :: mesh 00153 integer, intent(in) :: partNo,nParts 00154 character (LEN=*), intent(in) :: prefix 00155 end subroutine 00156 00157 integer function FEM_Mesh_assemble(nParts,parts) 00158 integer, intent(in) :: nParts 00159 integer, intent(in) :: parts(nParts) 00160 end function 00161 subroutine FEM_Mesh_partition(mesh,nParts,parts) 00162 integer, intent(in) :: mesh 00163 integer, intent(in) :: nParts 00164 integer, intent(out) :: parts(nParts) 00165 end subroutine 00166 00167 integer function FEM_Mesh_recv(source,tag,comm) 00168 integer, intent(in) :: source,tag,comm 00169 end function 00170 subroutine FEM_Mesh_send(mesh,source,tag,comm) 00171 integer, intent(in) :: mesh 00172 integer, intent(in) :: source,tag,comm 00173 end subroutine 00174 00175 integer function FEM_Mesh_reduce(mesh,master,comm) 00176 integer, intent(in) :: mesh 00177 integer, intent(in) :: master,comm 00178 end function 00179 integer function FEM_Mesh_broadcast(mesh,master,comm) 00180 integer, intent(in) :: mesh 00181 integer, intent(in) :: master,comm 00182 end function 00183 00184 00185 integer function FEM_Mesh_default_read() 00186 end function 00187 integer function FEM_Mesh_default_write() 00188 end function 00189 subroutine FEM_Mesh_set_default_read(mesh) 00190 integer, intent(in) :: mesh 00191 end subroutine 00192 subroutine FEM_Mesh_set_default_write(mesh) 00193 integer, intent(in) :: mesh 00194 end subroutine 00195 00196 function FEM_Mesh_get_length(mesh,ent) 00197 integer, intent(in) :: mesh,ent 00198 integer :: FEM_Mesh_get_length 00199 end function 00200 subroutine FEM_Mesh_set_length(mesh,ent,newLength) 00201 integer, intent(in) :: mesh,ent,newLength 00202 end subroutine 00203 function FEM_Mesh_get_width(mesh,ent) 00204 integer, intent(in) :: mesh,ent 00205 integer :: FEM_Mesh_get_width 00206 end function 00207 subroutine FEM_Mesh_set_width(mesh,ent,attr,newWidth) 00208 integer, intent(in) :: mesh,ent,attr,newWidth 00209 end subroutine 00210 function FEM_Mesh_get_datatype(mesh,ent,attr) 00211 integer, intent(in) :: mesh,ent,attr 00212 integer :: FEM_Mesh_get_datatype 00213 end function 00214 00215 integer function FEM_Mesh_get_entities(mesh,entities) 00216 integer, intent(in) :: mesh 00217 integer, intent(out) :: entities(:) 00218 end function 00219 integer function FEM_Mesh_get_attributes(mesh,entity,attrs) 00220 integer, intent(in) :: mesh, entity 00221 integer, intent(out) :: attrs(:) 00222 end function 00223 00224 00225 function FEM_Create_simple_field(base_type, vec_len) 00226 integer, intent(in) :: base_type, vec_len 00227 integer :: FEM_Create_Simple_Field 00228 end function 00229 00230 function FEM_Create_field(base_type, vec_len, init_offset, distance) 00231 integer, intent(in) :: base_type, vec_len, init_offset, distance 00232 integer :: FEM_Create_Field 00233 end function 00234 00235 function FEM_Comm_shared(mesh,ent) 00236 integer, intent(in) :: mesh,ent 00237 integer :: FEM_Comm_shared 00238 end function 00239 function FEM_Comm_ghost(mesh,ent) 00240 integer, intent(in) :: mesh,ent 00241 integer :: FEM_Comm_ghost 00242 end function 00243 00244 function FEM_Get_node_ghost() 00245 integer :: FEM_Get_node_ghost 00246 end function 00247 function FEM_Get_elem_ghost(elemType) 00248 integer, intent(in) :: elemType 00249 integer :: FEM_Get_elem_ghost 00250 end function 00251 00252 subroutine FEM_Exchange_ghost_lists(elemType,nIdx,localIdx) 00253 integer,intent (in) :: elemType,nIdx 00254 integer, intent(in) :: localIdx(nIdx) 00255 end subroutine 00256 00257 function FEM_Get_ghost_list_length() 00258 integer :: FEM_Get_ghost_list_length 00259 end function 00260 00261 function FEM_Get_sparse_length(sID) 00262 integer :: FEM_Get_sparse_length 00263 integer, intent(in) ::sID 00264 end function 00265 00266 subroutine FEM_Serial_split(nChunk) 00267 integer,intent (in) :: nChunk 00268 end subroutine 00269 subroutine FEM_Serial_begin(chunk) 00270 integer,intent (in) :: chunk 00271 end subroutine 00272 subroutine FEM_Serial_read(chunk,nChunks) 00273 integer,intent (in) :: chunk,nChunks 00274 end subroutine 00275 subroutine FEM_Serial_assemble() 00276 end subroutine 00277 00278 function FEM_Get_comm_partners() 00279 integer :: FEM_Get_comm_partners 00280 end function 00281 function FEM_Get_comm_partner(partnerNo) 00282 integer, intent(in) :: partnerNo 00283 integer :: FEM_Get_comm_partner 00284 end function 00285 function FEM_Get_comm_count(partnerNo) 00286 integer, intent(in) :: partnerNo 00287 integer :: FEM_Get_comm_count 00288 end function 00289 00290 subroutine FEM_Get_roccom_pconn_size(mesh,total_len,ghost_len) 00291 integer, intent(in) :: mesh 00292 integer, intent(out) :: total_len,ghost_len 00293 end subroutine 00294 00295 00296 subroutine FEM_Mesh_create_node_elem_adjacency(fem_mesh) 00297 integer, intent(in) :: fem_mesh 00298 end subroutine 00299 00300 subroutine FEM_Mesh_create_node_node_adjacency(fem_mesh) 00301 integer, intent(in) :: fem_mesh 00302 end subroutine 00303 00304 subroutine FEM_Mesh_create_elem_elem_adjacency(fem_mesh) 00305 integer, intent(in) :: fem_mesh 00306 end subroutine 00307 00308 subroutine FEM_Mesh_get2ElementsOnEdge(fem_mesh,n1,n2,e1,e2) 00309 integer, intent(in) :: fem_mesh, n1, n2 00310 integer, intent(out) :: e1, e2 00311 end subroutine 00312 00313 subroutine FEM_Mesh_allocate_valid_attr(fem_mesh, entity_type) 00314 integer, intent(in) :: fem_mesh, entity_type 00315 end subroutine 00316 00317 integer function FEM_is_valid(fem_mesh,entityType,entityIdx) 00318 integer, intent(in) :: fem_mesh, entityType, entityIdx 00319 end function 00320 00321 integer function FEM_count_valid(fem_mesh,entityType,entityIdx) 00322 integer, intent(in) :: fem_mesh, entityType, entityIdx 00323 end function 00324 00325 end interface 00326