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