In mesh_marc_build_elements use mesh_NcpElems instead of mesh_Nelems (line 2906).
Fixes error when not all elements are CP elements. Some formating and comment improvements.
This commit is contained in:
parent
b24b954f35
commit
e6e72ab3a7
|
@ -1171,8 +1171,8 @@ end subroutine mesh_spectral_mapNodesAndElems
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Gets maximum count of nodes, IPs, IP neighbors, and subNodes among cpElements.
|
!> @brief Gets maximum count of nodes, IPs, IP neighbors, and subNodes among cpElements.
|
||||||
!! Allocates global arrays 'mesh_maxNnodes', 'mesh_maxNips', mesh_maxNipNeighbors',
|
!! Sets global values 'mesh_maxNnodes', 'mesh_maxNips', mesh_maxNipNeighbors',
|
||||||
!! and mesh_maxNcellnodes
|
!! and 'mesh_maxNcellnodes'
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_spectral_count_cpSizes
|
subroutine mesh_spectral_count_cpSizes
|
||||||
|
|
||||||
|
@ -2611,7 +2611,7 @@ subroutine mesh_marc_count_cpElements(fileUnit)
|
||||||
do i=1_pInt,3_pInt+hypoelasticTableStyle ! Skip 3 or 4 lines
|
do i=1_pInt,3_pInt+hypoelasticTableStyle ! Skip 3 or 4 lines
|
||||||
read (fileUnit,610,END=620) line
|
read (fileUnit,610,END=620) line
|
||||||
enddo
|
enddo
|
||||||
mesh_NcpElems = mesh_NcpElems + IO_countContinuousIntValues(fileUnit)
|
mesh_NcpElems = mesh_NcpElems + IO_countContinuousIntValues(fileUnit) ! why not simply mesh_NcpElems = IO_countContinuousIntValues(fileUnit)?
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
@ -2767,8 +2767,8 @@ end subroutine mesh_marc_build_nodes
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Gets maximum count of nodes, IPs, IP neighbors, and cellnodes among cpElements.
|
!> @brief Gets maximum count of nodes, IPs, IP neighbors, and cellnodes among cpElements.
|
||||||
!! Allocates global arrays 'mesh_maxNnodes', 'mesh_maxNips', mesh_maxNipNeighbors',
|
!! Sets global values 'mesh_maxNnodes', 'mesh_maxNips', mesh_maxNipNeighbors',
|
||||||
!! and mesh_maxNcellnodes
|
!! and 'mesh_maxNcellnodes'
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_marc_count_cpSizes(fileUnit)
|
subroutine mesh_marc_count_cpSizes(fileUnit)
|
||||||
|
|
||||||
|
@ -2798,9 +2798,9 @@ subroutine mesh_marc_count_cpSizes(fileUnit)
|
||||||
myPos = IO_stringPos(line,maxNchunks)
|
myPos = IO_stringPos(line,maxNchunks)
|
||||||
if( IO_lc(IO_stringValue(line,myPos,1_pInt)) == 'connectivity' ) then
|
if( IO_lc(IO_stringValue(line,myPos,1_pInt)) == 'connectivity' ) then
|
||||||
read (fileUnit,610,END=630) line ! Garbage line
|
read (fileUnit,610,END=630) line ! Garbage line
|
||||||
do i=1_pInt,mesh_Nelems ! read all elements
|
do i=1_pInt,mesh_Nelems ! read all elements
|
||||||
read (fileUnit,610,END=630) line
|
read (fileUnit,610,END=630) line
|
||||||
myPos = IO_stringPos(line,maxNchunks) ! limit to id and type
|
myPos = IO_stringPos(line,maxNchunks) ! limit to id and type
|
||||||
e = mesh_FEasCP('elem',IO_intValue(line,myPos,1_pInt))
|
e = mesh_FEasCP('elem',IO_intValue(line,myPos,1_pInt))
|
||||||
if (e /= 0_pInt) then
|
if (e /= 0_pInt) then
|
||||||
t = FE_mapElemtype(IO_stringValue(line,myPos,2_pInt))
|
t = FE_mapElemtype(IO_stringValue(line,myPos,2_pInt))
|
||||||
|
@ -2821,7 +2821,7 @@ subroutine mesh_marc_count_cpSizes(fileUnit)
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Store FEid, type, mat, tex, and node list per elemen.
|
!> @brief Store FEid, type, mat, tex, and node list per element.
|
||||||
!! Allocates global array 'mesh_element'
|
!! Allocates global array 'mesh_element'
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_marc_build_elements(fileUnit)
|
subroutine mesh_marc_build_elements(fileUnit)
|
||||||
|
@ -2858,21 +2858,21 @@ subroutine mesh_marc_build_elements(fileUnit)
|
||||||
read (fileUnit,610,END=620) line
|
read (fileUnit,610,END=620) line
|
||||||
myPos = IO_stringPos(line,maxNchunks)
|
myPos = IO_stringPos(line,maxNchunks)
|
||||||
e = mesh_FEasCP('elem',IO_intValue(line,myPos,1_pInt))
|
e = mesh_FEasCP('elem',IO_intValue(line,myPos,1_pInt))
|
||||||
if (e /= 0_pInt) then ! disregard non CP elems
|
if (e /= 0_pInt) then ! disregard non CP elems
|
||||||
mesh_element(1,e) = IO_IntValue (line,myPos,1_pInt) ! FE id
|
mesh_element(1,e) = IO_IntValue (line,myPos,1_pInt) ! FE id
|
||||||
t = FE_mapElemtype(IO_StringValue(line,myPos,2_pInt)) ! elem type
|
t = FE_mapElemtype(IO_StringValue(line,myPos,2_pInt)) ! elem type
|
||||||
mesh_element(2,e) = t
|
mesh_element(2,e) = t
|
||||||
nNodesAlreadyRead = 0_pInt
|
nNodesAlreadyRead = 0_pInt
|
||||||
do j = 1_pInt,myPos(1)-2_pInt
|
do j = 1_pInt,myPos(1)-2_pInt
|
||||||
mesh_element(4_pInt+j,e) = mesh_FEasCP('node',IO_IntValue(line,myPos,j+2_pInt)) ! CP ids of nodes
|
mesh_element(4_pInt+j,e) = mesh_FEasCP('node',IO_IntValue(line,myPos,j+2_pInt)) ! CP ids of nodes
|
||||||
enddo
|
enddo
|
||||||
nNodesAlreadyRead = myPos(1) - 2_pInt
|
nNodesAlreadyRead = myPos(1) - 2_pInt
|
||||||
do while(nNodesAlreadyRead < FE_Nnodes(t)) ! read on if not all nodes in one line
|
do while(nNodesAlreadyRead < FE_Nnodes(t)) ! read on if not all nodes in one line
|
||||||
read (fileUnit,610,END=620) line
|
read (fileUnit,610,END=620) line
|
||||||
myPos = IO_stringPos(line,maxNchunks)
|
myPos = IO_stringPos(line,maxNchunks)
|
||||||
do j = 1_pInt,myPos(1)
|
do j = 1_pInt,myPos(1)
|
||||||
mesh_element(4_pInt+nNodesAlreadyRead+j,e) &
|
mesh_element(4_pInt+nNodesAlreadyRead+j,e) &
|
||||||
= mesh_FEasCP('node',IO_IntValue(line,myPos,j)) ! CP ids of nodes
|
= mesh_FEasCP('node',IO_IntValue(line,myPos,j)) ! CP ids of nodes
|
||||||
enddo
|
enddo
|
||||||
nNodesAlreadyRead = nNodesAlreadyRead + myPos(1)
|
nNodesAlreadyRead = nNodesAlreadyRead + myPos(1)
|
||||||
enddo
|
enddo
|
||||||
|
@ -2882,7 +2882,7 @@ subroutine mesh_marc_build_elements(fileUnit)
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
620 rewind(fileUnit) ! just in case "initial state" apears before "connectivity"
|
620 rewind(fileUnit) ! just in case "initial state" appears before "connectivity"
|
||||||
read (fileUnit,610,END=620) line
|
read (fileUnit,610,END=620) line
|
||||||
do
|
do
|
||||||
myPos(1:1+2*2) = IO_stringPos(line,2_pInt)
|
myPos(1:1+2*2) = IO_stringPos(line,2_pInt)
|
||||||
|
@ -2891,19 +2891,19 @@ subroutine mesh_marc_build_elements(fileUnit)
|
||||||
if (initialcondTableStyle == 2_pInt) read (fileUnit,610,END=620) line ! read extra line for new style
|
if (initialcondTableStyle == 2_pInt) read (fileUnit,610,END=620) line ! read extra line for new style
|
||||||
read (fileUnit,610,END=630) line ! read line with index of state var
|
read (fileUnit,610,END=630) line ! read line with index of state var
|
||||||
myPos(1:1+2*1) = IO_stringPos(line,1_pInt)
|
myPos(1:1+2*1) = IO_stringPos(line,1_pInt)
|
||||||
sv = IO_IntValue(line,myPos,1_pInt) ! figure state variable index
|
sv = IO_IntValue(line,myPos,1_pInt) ! figure state variable index
|
||||||
if( (sv == 2_pInt).or.(sv == 3_pInt) ) then ! only state vars 2 and 3 of interest
|
if( (sv == 2_pInt).or.(sv == 3_pInt) ) then ! only state vars 2 and 3 of interest
|
||||||
read (fileUnit,610,END=620) line ! read line with value of state var
|
read (fileUnit,610,END=620) line ! read line with value of state var
|
||||||
myPos(1:1+2*1) = IO_stringPos(line,1_pInt)
|
myPos(1:1+2*1) = IO_stringPos(line,1_pInt)
|
||||||
do while (scan(IO_stringValue(line,myPos,1_pInt),'+-',back=.true.)>1) ! is noEfloat value?
|
do while (scan(IO_stringValue(line,myPos,1_pInt),'+-',back=.true.)>1) ! is noEfloat value?
|
||||||
myVal = nint(IO_fixedNoEFloatValue(line,[0_pInt,20_pInt],1_pInt),pInt) ! state var's value
|
myVal = nint(IO_fixedNoEFloatValue(line,[0_pInt,20_pInt],1_pInt),pInt) ! state var's value
|
||||||
mesh_maxValStateVar(sv-1_pInt) = max(myVal,mesh_maxValStateVar(sv-1_pInt)) ! remember max val of homogenization and microstructure index
|
mesh_maxValStateVar(sv-1_pInt) = max(myVal,mesh_maxValStateVar(sv-1_pInt)) ! remember max val of homogenization and microstructure index
|
||||||
if (initialcondTableStyle == 2_pInt) then
|
if (initialcondTableStyle == 2_pInt) then
|
||||||
read (fileUnit,610,END=630) line ! read extra line
|
read (fileUnit,610,END=630) line ! read extra line
|
||||||
read (fileUnit,610,END=630) line ! read extra line
|
read (fileUnit,610,END=630) line ! read extra line
|
||||||
endif
|
endif
|
||||||
contInts = IO_continuousIntValues& ! get affected elements
|
contInts = IO_continuousIntValues& ! get affected elements
|
||||||
(fileUnit,mesh_Nelems,mesh_nameElemSet,mesh_mapElemSet,mesh_NelemSets)
|
(fileUnit,mesh_NcpElems,mesh_nameElemSet,mesh_mapElemSet,mesh_NelemSets)
|
||||||
do i = 1_pInt,contInts(1)
|
do i = 1_pInt,contInts(1)
|
||||||
e = mesh_FEasCP('elem',contInts(1_pInt+i))
|
e = mesh_FEasCP('elem',contInts(1_pInt+i))
|
||||||
mesh_element(1_pInt+sv,e) = myVal
|
mesh_element(1_pInt+sv,e) = myVal
|
||||||
|
@ -3438,8 +3438,8 @@ end subroutine mesh_abaqus_build_nodes
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Gets maximum count of nodes, IPs, IP neighbors, and subNodes among cpElements.
|
!> @brief Gets maximum count of nodes, IPs, IP neighbors, and subNodes among cpElements.
|
||||||
!! Allocates global arrays 'mesh_maxNnodes', 'mesh_maxNips', mesh_maxNipNeighbors',
|
!! Sets global values 'mesh_maxNnodes', 'mesh_maxNips', mesh_maxNipNeighbors',
|
||||||
!! and mesh_maxNcellnodes
|
!! and 'mesh_maxNcellnodes'
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_abaqus_count_cpSizes(fileUnit)
|
subroutine mesh_abaqus_count_cpSizes(fileUnit)
|
||||||
|
|
||||||
|
@ -3586,7 +3586,7 @@ subroutine mesh_abaqus_build_elements(fileUnit)
|
||||||
case('*user')
|
case('*user')
|
||||||
if ( IO_lc(IO_StringValue(line,myPos,2_pInt)) == 'material' .and. &
|
if ( IO_lc(IO_StringValue(line,myPos,2_pInt)) == 'material' .and. &
|
||||||
materialFound ) then
|
materialFound ) then
|
||||||
read (fileUnit,610,END=630) line ! read homogenization and microstructure
|
read (fileUnit,610,END=630) line ! read homogenization and microstructure
|
||||||
myPos(1:1+2*2) = IO_stringPos(line,2_pInt)
|
myPos(1:1+2*2) = IO_stringPos(line,2_pInt)
|
||||||
homog = nint(IO_floatValue(line,myPos,1_pInt),pInt)
|
homog = nint(IO_floatValue(line,myPos,1_pInt),pInt)
|
||||||
micro = nint(IO_floatValue(line,myPos,2_pInt),pInt)
|
micro = nint(IO_floatValue(line,myPos,2_pInt),pInt)
|
||||||
|
|
Loading…
Reference in New Issue