fixed over-sensitive error in homogeniztion and ifort option in makefile

This commit is contained in:
Martin Diehl 2013-12-19 08:49:47 +00:00
parent 4483223958
commit 61c6839723
10 changed files with 128 additions and 47 deletions

View File

@ -42,11 +42,11 @@ SHELL = /bin/sh
#any values will be overwritten by configure.py #any values will be overwritten by configure.py
FFTWROOT ?= /usr/local FFTWROOT ?= /usr/local
IMKLROOT ?= IMKLROOT ?=
ACMLROOT ?= ACMLROOT ?= /opt/acml5.3.0
LAPACKROOT ?= /usr LAPACKROOT ?= /usr
HDF5ROOT ?= HDF5ROOT ?=
F90 ?= ifort F90 ?= gfortran
######################################################################################## ########################################################################################
COMPILERNAME ?= $(F90) COMPILERNAME ?= $(F90)
@ -163,13 +163,13 @@ COMPILE_OPTIONS_ifort +=-diag-enable sc3\
-warn interfaces\ -warn interfaces\
-warn ignore_loc\ -warn ignore_loc\
-warn alignments\ -warn alignments\
-warn unused\ -warn unused
-warn errors
endif endif
################################################################################################### ###################################################################################################
#COMPILE SWITCHES #COMPILE SWITCHES
#-fpp: preprocessor #-fpp: preprocessor
#-ftz: flush unterflow to zero, automatically set if O<0,1,2,3> >0 #-ftz: flush unterflow to zero, automatically set if O<0,1,2,3> >0
#-assume byterecl record length is given in bytes (also set by -standard-semantics)
#-fimplicit-none: assume "implicit-none" even if not present in source #-fimplicit-none: assume "implicit-none" even if not present in source
#-diag-disable: disables warnings, where #-diag-disable: disables warnings, where
# warning ID 5268: the text exceeds right hand column allowed on the line (we have only comments there) # warning ID 5268: the text exceeds right hand column allowed on the line (we have only comments there)
@ -181,7 +181,6 @@ endif
# ignore_loc: %LOC is stripped from an actual argument # ignore_loc: %LOC is stripped from an actual argument
# alignments: data that is not naturally aligned # alignments: data that is not naturally aligned
# unused: declared variables that are never used # unused: declared variables that are never used
# errors: warnings are changed to errors
# stderrors: warnings about Fortran standard violations are changed to errors (STANDARD_CHECK) # stderrors: warnings about Fortran standard violations are changed to errors (STANDARD_CHECK)
# #
################################################################################################### ###################################################################################################
@ -197,7 +196,8 @@ DEBUG_OPTIONS_ifort :=-g\
-gen-interfaces\ -gen-interfaces\
-fp-stack-check\ -fp-stack-check\
-check bounds,format,output_conversion,pointers,uninit\ -check bounds,format,output_conversion,pointers,uninit\
-fpe-all0 -fpe-all0\
-warn errors
################################################################################################### ###################################################################################################
#COMPILE SWITCHES FOR RUNTIME DEBUGGING #COMPILE SWITCHES FOR RUNTIME DEBUGGING
#-g: Generate symbolic debugging information in the object file #-g: Generate symbolic debugging information in the object file
@ -211,6 +211,8 @@ DEBUG_OPTIONS_ifort :=-g\
# pointers: Checking for certain disassociated or uninitialized pointers or unallocated allocatable objects. # pointers: Checking for certain disassociated or uninitialized pointers or unallocated allocatable objects.
# uninit: Checking for uninitialized variables. # uninit: Checking for uninitialized variables.
#-fpe-all0 capture all floating-point exceptions, sets -ftz automatically #-fpe-all0 capture all floating-point exceptions, sets -ftz automatically
#-warn: enables warnings, where
# errors: warnings are changed to errors
# information on http://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors/ # information on http://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors/
################################################################################################### ###################################################################################################
#MORE OPTIONS FOR RUNTIME DEBUGGING #MORE OPTIONS FOR RUNTIME DEBUGGING
@ -247,7 +249,8 @@ endif
#-Wimplicit-procedure #-Wimplicit-procedure
#-Wall: sets the following Fortran options: #-Wall: sets the following Fortran options:
# -Waliasing: warn about possible aliasing of dummy arguments. Specifically, it warns if the same actual argument is associated with a dummy argument with "INTENT(IN)" and a dummy argument with "INTENT(OUT)" in a call with an explicit interface. # -Waliasing: warn about possible aliasing of dummy arguments. Specifically, it warns if the same actual argument is associated with a dummy argument with "INTENT(IN)" and a dummy argument with "INTENT(OUT)" in a call with an explicit interface.
# -Wampersand: checks if a character expression is continued proberly by an ampersand at the end of the line and at the beginning of the new line#-Warray-bounds: checks if array reference is out of bounds at compile time. use -fcheck-bounds to also check during runtime # -Wampersand: checks if a character expression is continued proberly by an ampersand at the end of the line and at the beginning of the new line
# -Warray-bounds: checks if array reference is out of bounds at compile time. use -fcheck-bounds to also check during runtime
# -Wconversion: warn about implicit conversions between different type # -Wconversion: warn about implicit conversions between different type
# -Wsurprising: warn when "suspicious" code constructs are encountered. While technically legal these usually indicate that an error has been made. # -Wsurprising: warn when "suspicious" code constructs are encountered. While technically legal these usually indicate that an error has been made.
# -Wc-binding-type: # -Wc-binding-type:

View File

@ -204,8 +204,27 @@ subroutine constitutive_dislotwin_init(fileUnit)
use mesh, only: & use mesh, only: &
mesh_maxNips, & mesh_maxNips, &
mesh_NcpElems mesh_NcpElems
use IO use IO, only: &
use material IO_read, &
IO_lc, &
IO_getTag, &
IO_isBlank, &
IO_stringPos, &
IO_stringValue, &
IO_floatValue, &
IO_intValue, &
IO_warning, &
IO_error, &
IO_timeStamp, &
IO_EOF
use material, only: &
homogenization_maxNgrains, &
phase_plasticity, &
phase_plasticityInstance, &
phase_Noutput, &
PLASTICITY_DISLOTWIN_label, &
PLASTICITY_DISLOTWIN_ID, &
MATERIAL_partPhase
use lattice use lattice
implicit none implicit none
@ -314,7 +333,7 @@ subroutine constitutive_dislotwin_init(fileUnit)
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= MATERIAL_partPhase) ! wind forward to <phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo

View File

@ -99,6 +99,10 @@ contains
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
subroutine constitutive_j2_init(fileUnit) subroutine constitutive_j2_init(fileUnit)
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment) use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
use debug, only: &
debug_level, &
debug_constitutive, &
debug_levelBasic
use math, only: & use math, only: &
math_Mandel3333to66, & math_Mandel3333to66, &
math_Voigt66to3333 math_Voigt66to3333
@ -113,11 +117,14 @@ subroutine constitutive_j2_init(fileUnit)
IO_error, & IO_error, &
IO_timeStamp, & IO_timeStamp, &
IO_EOF IO_EOF
use material use material, only: &
use debug, only: & homogenization_maxNgrains, &
debug_level, & phase_plasticity, &
debug_constitutive, & phase_plasticityInstance, &
debug_levelBasic phase_Noutput, &
PLASTICITY_J2_label, &
PLASTICITY_J2_ID, &
MATERIAL_partPhase
use lattice use lattice
implicit none implicit none
@ -169,7 +176,7 @@ subroutine constitutive_j2_init(fileUnit)
allocate(constitutive_j2_tausat_SinhFitD(maxNinstance), source=0.0_pReal) allocate(constitutive_j2_tausat_SinhFitD(maxNinstance), source=0.0_pReal)
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partPhase) ! wind forward to <phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo

View File

@ -59,6 +59,10 @@ contains
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
subroutine constitutive_none_init(fileUnit) subroutine constitutive_none_init(fileUnit)
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment) use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
use debug, only: &
debug_level, &
debug_constitutive, &
debug_levelBasic
use math, only: & use math, only: &
math_Mandel3333to66, & math_Mandel3333to66, &
math_Voigt66to3333 math_Voigt66to3333
@ -73,11 +77,15 @@ subroutine constitutive_none_init(fileUnit)
IO_error, & IO_error, &
IO_timeStamp, & IO_timeStamp, &
IO_EOF IO_EOF
use material use material, only: &
use debug, only: & homogenization_maxNgrains, &
debug_level, & phase_plasticity, &
debug_constitutive, & phase_plasticityInstance, &
debug_levelBasic phase_Noutput, &
PLASTICITY_NONE_label, &
PLASTICITY_NONE_ID, &
MATERIAL_partPhase
use lattice use lattice
implicit none implicit none
@ -111,7 +119,7 @@ subroutine constitutive_none_init(fileUnit)
allocate(constitutive_none_Cslip_66(6,6,maxNinstance), source=0.0_pReal) allocate(constitutive_none_Cslip_66(6,6,maxNinstance), source=0.0_pReal)
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partPhase) ! wind forward to <phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo

View File

@ -311,8 +311,8 @@ use IO, only: IO_read, &
IO_stringValue, & IO_stringValue, &
IO_floatValue, & IO_floatValue, &
IO_intValue, & IO_intValue, &
IO_error, &
IO_warning, & IO_warning, &
IO_error, &
IO_timeStamp, & IO_timeStamp, &
IO_EOF IO_EOF
use debug, only: debug_level, & use debug, only: debug_level, &
@ -326,7 +326,8 @@ use material, only: homogenization_maxNgrains, &
phase_plasticityInstance, & phase_plasticityInstance, &
phase_Noutput, & phase_Noutput, &
PLASTICITY_NONLOCAL_label, & PLASTICITY_NONLOCAL_label, &
PLASTICITY_NONLOCAL_ID PLASTICITY_NONLOCAL_ID, &
MATERIAL_partPhase
use lattice use lattice
integer(pInt), intent(in) :: fileUnit integer(pInt), intent(in) :: fileUnit
@ -439,7 +440,7 @@ allocate(nonSchmidCoeff(lattice_maxNnonSchmid,maxNmatIDs), sour
!*** readout data from material.config file !*** readout data from material.config file
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= MATERIAL_partPhase) ! wind forward to <phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo

View File

@ -131,15 +131,34 @@ subroutine constitutive_phenopowerlaw_init(fileUnit)
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment) use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
use prec, only: & use prec, only: &
tol_math_check tol_math_check
use math, only: &
math_Mandel3333to66, &
math_Voigt66to3333
use IO
use material
use debug, only: & use debug, only: &
debug_level, & debug_level, &
debug_constitutive,& debug_constitutive,&
debug_levelBasic debug_levelBasic
use math, only: &
math_Mandel3333to66, &
math_Voigt66to3333
use IO, only: &
IO_read, &
IO_lc, &
IO_getTag, &
IO_isBlank, &
IO_stringPos, &
IO_stringValue, &
IO_floatValue, &
IO_intValue, &
IO_warning, &
IO_error, &
IO_timeStamp, &
IO_EOF
use material, only: &
homogenization_maxNgrains, &
phase_plasticity, &
phase_plasticityInstance, &
phase_Noutput, &
PLASTICITY_PHENOPOWERLAW_label, &
PLASTICITY_PHENOPOWERLAW_ID, &
MATERIAL_partPhase
use lattice use lattice
implicit none implicit none
@ -232,7 +251,7 @@ subroutine constitutive_phenopowerlaw_init(fileUnit)
source=0.0_pReal) source=0.0_pReal)
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partPhase) ! wind forward to <phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo

View File

@ -202,16 +202,35 @@ module constitutive_titanmod
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
subroutine constitutive_titanmod_init(fileUnit) subroutine constitutive_titanmod_init(fileUnit)
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment) use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
use math, only: &
math_Mandel3333to66,&
math_Voigt66to3333,&
math_mul3x3
use IO
use material
use debug, only: & use debug, only: &
debug_level,& debug_level,&
debug_constitutive,& debug_constitutive,&
debug_levelBasic debug_levelBasic
use math, only: &
math_Mandel3333to66,&
math_Voigt66to3333,&
math_mul3x3
use IO, only: &
IO_read, &
IO_lc, &
IO_getTag, &
IO_isBlank, &
IO_stringPos, &
IO_stringValue, &
IO_floatValue, &
IO_intValue, &
IO_warning, &
IO_error, &
IO_timeStamp, &
IO_EOF
use material, only: &
homogenization_maxNgrains, &
phase_plasticity, &
phase_plasticityInstance, &
phase_Noutput, &
PLASTICITY_TITANMOD_label, &
PLASTICITY_TITANMOD_ID, &
MATERIAL_partPhase
use lattice use lattice
implicit none implicit none
@ -393,11 +412,11 @@ subroutine constitutive_titanmod_init(fileUnit)
constitutive_titanmod_interactionTwinTwin = 0.0_pReal constitutive_titanmod_interactionTwinTwin = 0.0_pReal
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= MATERIAL_partPhase) ! wind forward to <phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
do while (trim(line) /= IO_EOF) ! read through sections of phase part do while (trim(line) /= IO_EOF) ! read through sections of phase part
line = IO_read(fileUnit) line = IO_read(fileUnit)
if (IO_isBlank(line)) cycle ! skip empty lines if (IO_isBlank(line)) cycle ! skip empty lines
if (IO_getTag(line,'<','>') /= '') then ! stop at next part if (IO_getTag(line,'<','>') /= '') then ! stop at next part

View File

@ -161,6 +161,7 @@ subroutine homogenization_RGC_init(fileUnit)
if (IO_getTag(line,'[',']') /= '') then ! next section if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt section = section + 1_pInt
output = 0_pInt ! reset output counter output = 0_pInt ! reset output counter
cycle
endif endif
if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran
if (homogenization_type(section) == HOMOGENIZATION_RGC_ID) then ! one of my sections if (homogenization_type(section) == HOMOGENIZATION_RGC_ID) then ! one of my sections
@ -168,6 +169,8 @@ subroutine homogenization_RGC_init(fileUnit)
positions = IO_stringPos(line,MAXNCHUNKS) positions = IO_stringPos(line,MAXNCHUNKS)
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
select case(tag) select case(tag)
case ('type')
cycle
case ('(output)') case ('(output)')
output = output + 1_pInt output = output + 1_pInt
homogenization_RGC_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt)) homogenization_RGC_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))

View File

@ -108,7 +108,7 @@ subroutine homogenization_isostrain_init(fileUnit)
source=undefined_ID) source=undefined_ID)
rewind(fileUnit) rewind(fileUnit)
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partHomogenization) ! wind forward to <homogenization> do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partHomogenization)! wind forward to <homogenization>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
@ -122,6 +122,7 @@ subroutine homogenization_isostrain_init(fileUnit)
if (IO_getTag(line,'[',']') /= '') then ! next section if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt section = section + 1_pInt
output = 0_pInt ! reset output counter output = 0_pInt ! reset output counter
cycle
endif endif
if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran
if (homogenization_type(section) == HOMOGENIZATION_ISOSTRAIN_ID) then ! one of my sections if (homogenization_type(section) == HOMOGENIZATION_ISOSTRAIN_ID) then ! one of my sections
@ -129,6 +130,8 @@ subroutine homogenization_isostrain_init(fileUnit)
positions = IO_stringPos(line,MAXNCHUNKS) positions = IO_stringPos(line,MAXNCHUNKS)
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
select case(tag) select case(tag)
case('type')
cycle
case ('(output)') case ('(output)')
output = output + 1_pInt output = output + 1_pInt
homogenization_isostrain_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt)) homogenization_isostrain_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
@ -148,7 +151,7 @@ subroutine homogenization_isostrain_init(fileUnit)
' ('//HOMOGENIZATION_isostrain_label//')') ' ('//HOMOGENIZATION_isostrain_label//')')
end select end select
case ('nconstituents','ngrains') case ('nconstituents','ngrains')
homogenization_isostrain_Ngrains(i) = IO_intValue(line,positions,2_pInt) homogenization_isostrain_Ngrains(i) = IO_intValue(line,positions,2_pInt)
case ('mapping') case ('mapping')
select case(IO_lc(IO_stringValue(line,positions,2_pInt))) select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
case ('parallel','sum') case ('parallel','sum')

View File

@ -318,7 +318,7 @@ subroutine material_parseHomogenization(fileUnit,myPart)
rewind(fileUnit) rewind(fileUnit)
line = '' ! to have it initialized line = '' ! to have it initialized
section = 0_pInt ! - " - section = 0_pInt ! - " -
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to myPart do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to <homogenization>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header
@ -409,7 +409,7 @@ subroutine material_parseMicrostructure(fileUnit,myPart)
section = 0_pInt ! - " - section = 0_pInt ! - " -
constituent = 0_pInt ! - " - constituent = 0_pInt ! - " -
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to myPart do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to <microstructure>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header
@ -491,7 +491,7 @@ subroutine material_parseCrystallite(fileUnit,myPart)
rewind(fileUnit) rewind(fileUnit)
line = '' ! to have it initialized line = '' ! to have it initialized
section = 0_pInt ! - " - section = 0_pInt ! - " -
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to myPart do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to <Crystallite>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header
@ -563,7 +563,7 @@ subroutine material_parsePhase(fileUnit,myPart)
rewind(fileUnit) rewind(fileUnit)
line = '' ! to have it initialized line = '' ! to have it initialized
section = 0_pInt ! - " - section = 0_pInt ! - " -
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to myPart do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to <Phase>
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header
@ -680,8 +680,7 @@ subroutine material_parseTexture(fileUnit,myPart)
section = 0_pInt ! - " - section = 0_pInt ! - " -
gauss = 0_pInt ! - " - gauss = 0_pInt ! - " -
fiber = 0_pInt ! - " - fiber = 0_pInt ! - " -
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to <texture>
do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= myPart) ! wind forward to myPart
line = IO_read(fileUnit) line = IO_read(fileUnit)
enddo enddo
if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header if (echo) write(6,'(/,1x,a)') trim(line) ! echo part header