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