cleaned up mesh_build_CPeleMapping code
This commit is contained in:
parent
bab4381447
commit
656a6808bc
125
trunk/mesh.f90
125
trunk/mesh.f90
|
@ -316,6 +316,7 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
|
|
||||||
rewind(unit)
|
rewind(unit)
|
||||||
allocate ( mesh_mapFEtoCPnode(2,mesh_Nnodes) )
|
allocate ( mesh_mapFEtoCPnode(2,mesh_Nnodes) )
|
||||||
|
mesh_mapFEtoCPnode(:,:) = 0_pInt
|
||||||
node_count(:) = 0_pInt
|
node_count(:) = 0_pInt
|
||||||
|
|
||||||
do
|
do
|
||||||
|
@ -380,7 +381,8 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
rewind(unit)
|
rewind(unit)
|
||||||
|
|
||||||
allocate ( mesh_mapFEtoCPelem(2,mesh_NcpElems) )
|
allocate ( mesh_mapFEtoCPelem(2,mesh_NcpElems) )
|
||||||
cur_CPele = 0
|
mesh_mapFEtoCPelem(:,:) = 0_pInt
|
||||||
|
cur_CPele = 0_pInt
|
||||||
|
|
||||||
do
|
do
|
||||||
read (unit,610,END=620) line
|
read (unit,610,END=620) line
|
||||||
|
@ -399,30 +401,20 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
||||||
end do
|
end do
|
||||||
else
|
else
|
||||||
do i=1,pos(1)-1
|
|
||||||
cur_CPele = cur_CPele+1
|
|
||||||
mesh_mapFEtoCPelem(1,cur_CPele) = IO_IntValue(line,pos,i)
|
|
||||||
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
|
||||||
end do
|
|
||||||
if( IO_lc(IO_Stringvalue(line,pos,pos(1))).ne.'c' )then
|
|
||||||
cur_CPele = cur_CPele+1
|
|
||||||
mesh_mapFEtoCPelem(1,cur_CPele) = IO_IntValue(line,pos,pos(1))
|
|
||||||
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
|
||||||
end if
|
|
||||||
do while( IO_lc(IO_Stringvalue(line,pos,pos(1))).eq.'c' )
|
do while( IO_lc(IO_Stringvalue(line,pos,pos(1))).eq.'c' )
|
||||||
read (unit,610,END=620) line
|
|
||||||
pos = IO_stringPos(line,20)
|
|
||||||
do i=1,pos(1)-1
|
do i=1,pos(1)-1
|
||||||
cur_CPele = cur_CPele+1
|
cur_CPele = cur_CPele+1
|
||||||
mesh_mapFEtoCPelem(1,cur_CPele) = IO_IntValue(line,pos,i)
|
mesh_mapFEtoCPelem(1,cur_CPele) = IO_IntValue(line,pos,i)
|
||||||
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
||||||
end do
|
end do
|
||||||
if( IO_lc(IO_Stringvalue(line,pos,pos(1))).ne.'c' )then
|
read (unit,610,END=620) line
|
||||||
cur_CPele = cur_CPele+1
|
pos = IO_stringPos(line,20)
|
||||||
mesh_mapFEtoCPelem(1,cur_CPele) = IO_IntValue(line,pos,pos(1))
|
end do
|
||||||
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
do i=1,pos(1)
|
||||||
end if
|
cur_CPele = cur_CPele+1
|
||||||
end do
|
mesh_mapFEtoCPelem(1,cur_CPele) = IO_IntValue(line,pos,i)
|
||||||
|
mesh_mapFEtoCPelem(2,cur_CPele) = cur_CPele
|
||||||
|
end do
|
||||||
end if
|
end if
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
|
@ -504,6 +496,7 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
|
|
||||||
rewind(unit)
|
rewind(unit)
|
||||||
allocate ( mesh_node (3,mesh_Nnodes) )
|
allocate ( mesh_node (3,mesh_Nnodes) )
|
||||||
|
mesh_node(:,:) = 0_pInt
|
||||||
|
|
||||||
610 FORMAT(A264)
|
610 FORMAT(A264)
|
||||||
|
|
||||||
|
@ -532,16 +525,100 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
SUBROUTINE mesh_build_element (unit)
|
SUBROUTINE mesh_build_element (unit)
|
||||||
|
|
||||||
use prec, only: pInt
|
use prec, only: pInt
|
||||||
|
use IO
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer unit
|
integer unit
|
||||||
|
integer FE_node,Nnodes,i,j,sv,ele,val
|
||||||
|
integer(pInt), dimension (41) :: pos
|
||||||
|
logical not_found
|
||||||
|
character*264 line
|
||||||
|
|
||||||
|
rewind(unit)
|
||||||
|
allocate ( mesh_element (mesh_Nelems,4+mesh_maxNnodes) )
|
||||||
|
mesh_element(:,:) = 0_pInt
|
||||||
|
|
||||||
|
610 FORMAT(A264)
|
||||||
|
|
||||||
|
do
|
||||||
|
read (unit,610,END=620) line
|
||||||
|
pos = IO_stringPos(line,2)
|
||||||
|
|
||||||
|
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)))
|
||||||
|
mesh_element (i,1) = IO_IntValue (line,pos,1)
|
||||||
|
mesh_element (i,2) = IO_IntValue (line,pos,2)
|
||||||
|
do j=1,Nnodes
|
||||||
|
FE_node = IO_IntValue (line,pos,j+2)
|
||||||
|
! CP_node = mesh_FEasCP('node',FE_node)
|
||||||
|
mesh_element(i,j+4) = FE_node
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end if
|
||||||
|
|
||||||
|
if( (IO_lc(IO_stringValue(line,pos,1)) == 'initial').and. &
|
||||||
|
(IO_lc(IO_stringValue(line,pos,2)) == 'state') ) then
|
||||||
|
read (unit,610,END=620) line
|
||||||
|
pos = IO_stringPos(line,66)
|
||||||
|
sv = IO_IntValue (line,pos,1)
|
||||||
|
if( (sv.ne.2).and.(sv.ne.3) )then
|
||||||
|
write(*,*) 'Major PROBLEM!! -> Invalid state variable found'
|
||||||
|
write(*,*) sv
|
||||||
|
end if
|
||||||
|
|
||||||
|
read (unit,610,END=620) line
|
||||||
|
read(UNIT=line(2:2),FMT='(I)') val
|
||||||
|
|
||||||
|
read (unit,610,END=620) line
|
||||||
|
pos = IO_stringPos(line,20)
|
||||||
|
|
||||||
|
do while( IO_lc(IO_Stringvalue(line,pos,pos(1))).eq.'c' )
|
||||||
|
do i=1,pos(1)-1
|
||||||
|
ele = IO_IntValue(line,pos,i)
|
||||||
|
not_found = .true.
|
||||||
|
j=1
|
||||||
|
do while( not_found )
|
||||||
|
if( mesh_element(j,1).eq.ele )then
|
||||||
|
not_found = .false.
|
||||||
|
ele = j
|
||||||
|
end if
|
||||||
|
j=j+1
|
||||||
|
end do
|
||||||
|
mesh_element(ele,sv+1) = 40
|
||||||
|
end do
|
||||||
|
read (unit,610,END=620) line
|
||||||
|
pos = IO_stringPos(line,20)
|
||||||
|
end do
|
||||||
|
do i=1,pos(1)
|
||||||
|
ele = IO_IntValue(line,pos,i)
|
||||||
|
not_found = .true.
|
||||||
|
j=1
|
||||||
|
do while( not_found )
|
||||||
|
if( mesh_element(j,1).eq.ele )then
|
||||||
|
not_found = .false.
|
||||||
|
ele = j
|
||||||
|
end if
|
||||||
|
j=j+1
|
||||||
|
end do
|
||||||
|
mesh_element(ele,sv+1) = 40
|
||||||
|
end do
|
||||||
|
|
||||||
|
end if
|
||||||
|
|
||||||
|
end do
|
||||||
|
|
||||||
|
620 continue
|
||||||
|
|
||||||
return
|
return
|
||||||
END SUBROUTINE
|
END SUBROUTINE
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!********************************************************************
|
||||||
! Get global variables (like # ele, # nodes, # ele types, # CP ele)
|
! Get global variables (#ele, #nodes, #ele types, #CP ele, max # nodes per element)
|
||||||
!********************************************************************
|
!********************************************************************
|
||||||
SUBROUTINE mesh_get_globals (unit)
|
SUBROUTINE mesh_get_globals (unit)
|
||||||
|
|
||||||
|
@ -549,7 +626,7 @@ 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,pos(41)
|
integer(pInt) unit,i,pos(41),Nnodes
|
||||||
character*264 line
|
character*264 line
|
||||||
|
|
||||||
610 FORMAT(A264)
|
610 FORMAT(A264)
|
||||||
|
@ -567,6 +644,10 @@ matchFace: do j = 1,FE_NfaceNodes(-neighbor,t) ! count over nodes on matching f
|
||||||
mesh_Nnodes = IO_IntValue (line,pos,4)
|
mesh_Nnodes = IO_IntValue (line,pos,4)
|
||||||
case('elements')
|
case('elements')
|
||||||
mesh_NelemTypes = mesh_NelemTypes+1
|
mesh_NelemTypes = mesh_NelemTypes+1
|
||||||
|
Nnodes = FE_Nnodes(FE_mapElemtype(IO_intValue(line,pos,2)))
|
||||||
|
if( Nnodes.gt.mesh_maxNnodes )then
|
||||||
|
mesh_maxNnodes = Nnodes
|
||||||
|
end if
|
||||||
case('hypoelastic')
|
case('hypoelastic')
|
||||||
do i=1,4
|
do i=1,4
|
||||||
read (unit,610,END=620) line
|
read (unit,610,END=620) line
|
||||||
|
|
Loading…
Reference in New Issue