Added max # shared elements
This commit is contained in:
parent
05db614589
commit
7e84af73c1
127
trunk/mesh.f90
127
trunk/mesh.f90
|
@ -47,50 +47,73 @@
|
||||||
integer(pInt), dimension(:,:,:,:), allocatable :: mesh_ipNeighborhood
|
integer(pInt), dimension(:,:,:,:), allocatable :: mesh_ipNeighborhood
|
||||||
real(pReal), allocatable :: mesh_node (:,:)
|
real(pReal), allocatable :: mesh_node (:,:)
|
||||||
|
|
||||||
integer(pInt), parameter :: FE_Nelemtypes = 1
|
integer(pInt), parameter :: FE_Nelemtypes = 2
|
||||||
integer(pInt), parameter :: FE_maxNnodes = 8
|
integer(pInt), parameter :: FE_maxNnodes = 8
|
||||||
integer(pInt), parameter :: FE_maxNips = 8
|
integer(pInt), parameter :: FE_maxNips = 8
|
||||||
integer(pInt), parameter :: FE_maxNneighbors = 6
|
integer(pInt), parameter :: FE_maxNneighbors = 6
|
||||||
integer(pInt), parameter :: FE_maxNfaceNodes = 4
|
integer(pInt), parameter :: FE_maxNfaceNodes = 4
|
||||||
integer(pInt), parameter :: FE_maxNfaces = 6
|
integer(pInt), parameter :: FE_maxNfaces = 6
|
||||||
integer(pInt), dimension(200) :: FE_mapElemtype
|
integer(pInt), dimension(200):: FE_mapElemtype
|
||||||
integer(pInt), dimension(FE_Nelemtypes), parameter :: FE_Nnodes = &
|
integer(pInt), dimension(FE_Nelemtypes), parameter :: FE_Nnodes = &
|
||||||
(/8/)
|
(/8, & ! element 7
|
||||||
|
4 & ! element 134
|
||||||
|
/)
|
||||||
integer(pInt), dimension(FE_Nelemtypes), parameter :: FE_Nips = &
|
integer(pInt), dimension(FE_Nelemtypes), parameter :: FE_Nips = &
|
||||||
(/8/)
|
(/8, & ! element 7
|
||||||
|
1 & ! element 134
|
||||||
|
/)
|
||||||
integer(pInt), dimension(FE_Nelemtypes), parameter :: FE_NipNeighbors = &
|
integer(pInt), dimension(FE_Nelemtypes), parameter :: FE_NipNeighbors = &
|
||||||
(/ 6 /)
|
(/6, & ! element 7
|
||||||
|
4 & ! element 134
|
||||||
|
/)
|
||||||
integer(pInt), dimension(FE_maxNfaces,FE_Nelemtypes), parameter :: FE_NfaceNodes = &
|
integer(pInt), dimension(FE_maxNfaces,FE_Nelemtypes), parameter :: FE_NfaceNodes = &
|
||||||
reshape((/&
|
reshape((/&
|
||||||
4,4,4,4,4,4 & ! element 7
|
4,4,4,4,4,4, & ! element 7
|
||||||
|
3,3,3,3,0,0 & ! element 134
|
||||||
/),(/FE_maxNfaces,FE_Nelemtypes/))
|
/),(/FE_maxNfaces,FE_Nelemtypes/))
|
||||||
integer(pInt), dimension(FE_maxNips,FE_Nelemtypes), parameter :: FE_nodeAtIP = &
|
integer(pInt), dimension(FE_maxNips,FE_Nelemtypes), parameter :: FE_nodeAtIP = &
|
||||||
reshape((/&
|
reshape((/&
|
||||||
1,2,4,3,5,6,8,7 & ! element 7
|
1,2,4,3,5,6,8,7, & ! element 7
|
||||||
|
1,0,0,0,0,0,0,0 & ! element 134
|
||||||
/),(/FE_maxNips,FE_Nelemtypes/))
|
/),(/FE_maxNips,FE_Nelemtypes/))
|
||||||
integer(pInt), dimension(FE_maxNnodes,FE_Nelemtypes), parameter :: FE_ipAtNode = &
|
integer(pInt), dimension(FE_maxNnodes,FE_Nelemtypes), parameter :: FE_ipAtNode = &
|
||||||
reshape((/&
|
reshape((/&
|
||||||
1,2,4,3,5,6,8,7 & ! element 7
|
1,2,4,3,5,6,8,7, & ! element 7
|
||||||
|
1,1,1,1,0,0,0,0 & ! element 134
|
||||||
/),(/FE_maxNnodes,FE_Nelemtypes/))
|
/),(/FE_maxNnodes,FE_Nelemtypes/))
|
||||||
integer(pInt), dimension(FE_maxNfaceNodes,FE_maxNfaces,FE_Nelemtypes), parameter :: FE_nodeOnFace = &
|
integer(pInt), dimension(FE_maxNfaceNodes,FE_maxNfaces,FE_Nelemtypes), parameter :: FE_nodeOnFace = &
|
||||||
reshape((/&
|
reshape((/&
|
||||||
1,2,3,4 , & ! element 7
|
1,2,3,4 , & ! element 7
|
||||||
2,1,5,6 , &
|
2,1,5,6 , &
|
||||||
3,2,6,7 , &
|
3,2,6,7 , &
|
||||||
3,4,8,7 , &
|
3,4,8,7 , &
|
||||||
4,1,5,8 , &
|
4,1,5,8 , &
|
||||||
8,7,6,5 &
|
8,7,6,5 , &
|
||||||
|
1,2,3,0 , & ! element 134
|
||||||
|
1,4,2,0 , &
|
||||||
|
2,3,4,0 , &
|
||||||
|
1,3,4,0 , &
|
||||||
|
0,0,0,0 , &
|
||||||
|
0,0,0,0 &
|
||||||
/),(/FE_maxNfaceNodes,FE_maxNfaces,FE_Nelemtypes/))
|
/),(/FE_maxNfaceNodes,FE_maxNfaces,FE_Nelemtypes/))
|
||||||
integer(pInt), dimension(FE_maxNneighbors,FE_maxNips,FE_Nelemtypes), parameter :: FE_ipNeighbor = &
|
integer(pInt), dimension(FE_maxNneighbors,FE_maxNips,FE_Nelemtypes), parameter :: FE_ipNeighbor = &
|
||||||
reshape((/&
|
reshape((/&
|
||||||
2,-5, 3,-2, 5,-1 , & ! element 7
|
2,-5, 3,-2, 5,-1 , & ! element 7
|
||||||
-3, 1, 4,-2, 6,-1 , &
|
-3, 1, 4,-2, 6,-1 , &
|
||||||
4,-5,-4, 1, 7,-1 , &
|
4,-5,-4, 1, 7,-1 , &
|
||||||
-3, 3,-4, 2, 8,-1 , &
|
-3, 3,-4, 2, 8,-1 , &
|
||||||
6,-5, 7,-2,-6, 1 , &
|
6,-5, 7,-2,-6, 1 , &
|
||||||
-3, 5, 8,-2,-6, 2 , &
|
-3, 5, 8,-2,-6, 2 , &
|
||||||
8,-5,-4, 5,-6, 3 , &
|
8,-5,-4, 5,-6, 3 , &
|
||||||
-3, 7,-4, 6,-6, 4 &
|
-3, 7,-4, 6,-6, 4 , &
|
||||||
|
-1,-2,-3,-4, 0, 0 , & ! element 134
|
||||||
|
0, 0, 0, 0, 0, 0 , &
|
||||||
|
0, 0, 0, 0, 0, 0 , &
|
||||||
|
0, 0, 0, 0, 0, 0 , &
|
||||||
|
0, 0, 0, 0, 0, 0 , &
|
||||||
|
0, 0, 0, 0, 0, 0 , &
|
||||||
|
0, 0, 0, 0, 0, 0 , &
|
||||||
|
0, 0, 0, 0, 0, 0 &
|
||||||
/),(/FE_maxNneighbors,FE_maxNips,FE_Nelemtypes/))
|
/),(/FE_maxNneighbors,FE_maxNips,FE_Nelemtypes/))
|
||||||
|
|
||||||
CONTAINS
|
CONTAINS
|
||||||
|
@ -113,6 +136,11 @@
|
||||||
mesh_maxNips = 0_pInt
|
mesh_maxNips = 0_pInt
|
||||||
mesh_maxNnodes = 0_pInt
|
mesh_maxNnodes = 0_pInt
|
||||||
mesh_maxNsharedElems = 0_pInt
|
mesh_maxNsharedElems = 0_pInt
|
||||||
|
|
||||||
|
FE_mapElemtype = 1 ! MISSING this should be zero...
|
||||||
|
FE_mapElemtype( 7) = 1
|
||||||
|
FE_mapElemtype(134) = 2
|
||||||
|
|
||||||
! call to various subrountes to parse the stuff from the input file...
|
! call to various subrountes to parse the stuff from the input file...
|
||||||
END SUBROUTINE
|
END SUBROUTINE
|
||||||
|
|
||||||
|
@ -279,14 +307,16 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
use IO
|
use IO
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer(pInt) unit,i
|
integer(pInt), dimension (mesh_Nnodes) :: node_count
|
||||||
integer(pInt), dimension (3) :: pos
|
integer(pInt) unit,i,j,Nnodes,cur_node
|
||||||
|
integer(pInt), dimension (133) :: pos
|
||||||
character*264 line
|
character*264 line
|
||||||
|
|
||||||
610 FORMAT(A264)
|
610 FORMAT(A264)
|
||||||
|
|
||||||
rewind(unit)
|
rewind(unit)
|
||||||
allocate ( mesh_mapFEtoCPnode(2,mesh_Nnodes) )
|
allocate ( mesh_mapFEtoCPnode(2,mesh_Nnodes) )
|
||||||
|
node_count(:) = 0_pInt
|
||||||
|
|
||||||
do
|
do
|
||||||
read (unit,610,END=620) line
|
read (unit,610,END=620) line
|
||||||
|
@ -302,6 +332,27 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
end do
|
end do
|
||||||
620 continue
|
620 continue
|
||||||
|
|
||||||
|
rewind(unit)
|
||||||
|
do
|
||||||
|
read (unit,610,END=630) line
|
||||||
|
pos = IO_stringPos(line,1)
|
||||||
|
if( IO_lc(IO_stringValue(line,pos,1)) == 'connectivity' ) then
|
||||||
|
read (unit,610,END=620) line ! Garbage line
|
||||||
|
do i=1,mesh_Nelems
|
||||||
|
read (unit,610,END=620) line
|
||||||
|
pos = IO_stringPos(line,66) ! limit to 64 nodes max (plus ID, type)
|
||||||
|
Nnodes = FE_Nnodes(FE_mapElemtype(IO_intValue(line,pos,2)))
|
||||||
|
do j=1,Nnodes
|
||||||
|
cur_node = IO_IntValue (line,pos,j+2)
|
||||||
|
node_count( mesh_FEasCP('node',cur_node) )= node_count( mesh_FEasCP('node',cur_node) )+1
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
630 continue
|
||||||
|
|
||||||
|
mesh_maxNsharedElems = MAXVAL(node_count)
|
||||||
|
|
||||||
return
|
return
|
||||||
END SUBROUTINE
|
END SUBROUTINE
|
||||||
|
|
||||||
|
@ -402,6 +453,7 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
do
|
do
|
||||||
read (unit,610,END=620) line
|
read (unit,610,END=620) line
|
||||||
pos = IO_stringPos(line,20)
|
pos = IO_stringPos(line,20)
|
||||||
|
|
||||||
select case ( IO_lc(IO_Stringvalue(line,pos,1)))
|
select case ( IO_lc(IO_Stringvalue(line,pos,1)))
|
||||||
case('sizing')
|
case('sizing')
|
||||||
mesh_Nelems = IO_IntValue (line,pos,3)
|
mesh_Nelems = IO_IntValue (line,pos,3)
|
||||||
|
@ -409,37 +461,24 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
case('elements')
|
case('elements')
|
||||||
mesh_NelemTypes = mesh_NelemTypes+1
|
mesh_NelemTypes = mesh_NelemTypes+1
|
||||||
case('hypoelastic')
|
case('hypoelastic')
|
||||||
write(7,*) 'hypo'
|
|
||||||
do i=1,4
|
do i=1,4
|
||||||
read (unit,610,END=620) line
|
read (unit,610,END=620) line
|
||||||
end do
|
end do
|
||||||
pos = IO_stringPos(line,20)
|
pos = IO_stringPos(line,20)
|
||||||
write(7,*) pos(1)
|
|
||||||
if( IO_lc(IO_Stringvalue(line,pos,2)).eq.'to' )then
|
if( IO_lc(IO_Stringvalue(line,pos,2)).eq.'to' )then
|
||||||
mesh_NcpElems = IO_IntValue(line,pos,3)-IO_IntValue(line,pos,1)+1
|
mesh_NcpElems = IO_IntValue(line,pos,3)-IO_IntValue(line,pos,1)+1
|
||||||
else
|
else
|
||||||
write(7,*) pos(1)
|
mesh_NcpElems = mesh_NcpElems + pos(1)
|
||||||
do i=1,pos(1)
|
do while( IO_lc(IO_Stringvalue(line,pos,pos(1))).eq.'c' )
|
||||||
write(7,*) pos(1)
|
mesh_NcpElems = mesh_NcpElems - 1 ! Counted the c character from the line
|
||||||
end do
|
read (unit,610,END=620) line
|
||||||
|
pos = IO_stringPos(line,20)
|
||||||
|
mesh_NcpElems = mesh_NcpElems + pos(1)
|
||||||
|
end do
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
|
|
||||||
! pos = 1
|
|
||||||
! do while( pos.le.len_trim(line)-1 )
|
|
||||||
! pos = IO_skip_white_space(line,pos)
|
|
||||||
! if( line(pos:pos).eq.'c' )then
|
|
||||||
! read (unit,610,END=630) line
|
|
||||||
! pos = 1
|
|
||||||
! pos = IO_skip_white_space(line,pos)
|
|
||||||
! end if
|
|
||||||
! call IO_extract_INT(line,pos,start)
|
|
||||||
! num_cp_ele = num_cp_ele + 1
|
|
||||||
! end do
|
|
||||||
! end if
|
|
||||||
|
|
||||||
end do
|
end do
|
||||||
620 continue
|
620 continue
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue