introduced alternative location for material configuration.

If present, the >>>JOB.materialConfig<<< file takes precedence over the standard >>>material.config<<<
This commit is contained in:
Martin Diehl 2011-08-02 10:14:16 +00:00
parent 564eb5009f
commit 75c67f53f7
6 changed files with 140 additions and 105 deletions

View File

@ -249,7 +249,7 @@ end function
IO_open_jobFile = .false. IO_open_jobFile = .false.
open(unit,status='replace',err=100,file=trim(getSolverWorkingDirectoryName())//& open(unit,status='old',err=100,file=trim(getSolverWorkingDirectoryName())//&
trim(getSolverJobName())//'.'//newExt) trim(getSolverJobName())//'.'//newExt)
IO_open_jobFile = .true. IO_open_jobFile = .true.
@ -258,6 +258,30 @@ end function
endfunction endfunction
!********************************************************************
! open (write) file related to current job
! but with different extension to given unit
!********************************************************************
logical function IO_write_jobFile(unit,newExt)
use prec, only: pReal, pInt
use DAMASK_interface
implicit none
integer(pInt), intent(in) :: unit
character(*), intent(in) :: newExt
IO_write_jobFile = .false.
open(unit,status='replace',err=100,file=trim(getSolverWorkingDirectoryName())//&
trim(getSolverJobName())//'.'//newExt)
IO_write_jobFile = .true.
100 return
endfunction
!******************************************************************** !********************************************************************
! open (write) binary file related to current job ! open (write) binary file related to current job
! but with different extension to given unit ! but with different extension to given unit
@ -1161,185 +1185,185 @@ endfunction
select case (ID) select case (ID)
case (30) case (30)
msg = 'error opening spectral loadcase' msg = 'opening spectral loadcase'
case (31) case (31)
msg = 'mask consistency violated in spectral loadcase' msg = 'mask consistency violated in spectral loadcase'
case (32) case (32)
msg = 'ill defined L (each line should be either fully or not at all defined) in spectral loadcase' msg = 'ill-defined L (each line should be either fully or not at all defined) in spectral loadcase'
case (34) case (34)
msg = 'negative time increment in spectral loadcase' msg = 'negative time increment in spectral loadcase'
case (35) case (35)
msg = 'Non-positive increments in spectral loadcase' msg = 'non-positive increments in spectral loadcase'
case (36) case (36)
msg = 'Non-positive result frequency in spectral loadcase' msg = 'non-positive result frequency in spectral loadcase'
case (40) case (40)
msg = 'path rectification error' msg = 'path rectification error'
case (41) case (41)
msg = 'path too long' msg = 'path too long'
case (42) case (42)
msg = 'missing descriptive information in spectral mesh' msg = 'missing header info in spectral mesh'
case (43) case (43)
msg = 'resolution error in spectral mesh' msg = 'resolution in spectral mesh'
case (44) case (44)
msg = 'dimension error in spectral mesh' msg = 'dimension in spectral mesh'
case (50) case (50)
msg = 'Error writing constitutive output description' msg = 'writing constitutive output description'
case (100) case (100)
msg = 'Cannot open config file' msg = 'opening material configuration'
case (101) case (101)
msg = 'Cannot open input file' msg = 'opening input file'
case (102) case (102)
msg = 'argument count error (mesh and loadcase) for DAMASK_spectral' msg = 'DAMASK_spectral misses arguments geom + load'
case (103) case (103)
msg = 'Resolution contains odd number' msg = 'odd resolution given'
case (104) case (104)
msg = 'FFTW init error' msg = 'initializing FFTW'
case (105) case (105)
msg = 'Error reading from ODF file' msg = 'reading from ODF file'
case (106) case (106)
msg = 'Error reading info on old job' msg = 'reading info on old job'
case (110) case (110)
msg = 'No homogenization specified via State Variable 2' msg = 'no homogenization specified via State Variable 2'
case (120) case (120)
msg = 'No microstructure specified via State Variable 3' msg = 'no microstructure specified via State Variable 3'
case (125) case (125)
msg = 'No entries in config part' msg = 'no entries in config part'
case (130) case (130)
msg = 'Homogenization index out of bounds' msg = 'homogenization index out of bounds'
case (140) case (140)
msg = 'Microstructure index out of bounds' msg = 'microstructure index out of bounds'
case (150) case (150)
msg = 'Crystallite index out of bounds' msg = 'crystallite index out of bounds'
case (155) case (155)
msg = 'Phase index out of bounds' msg = 'phase index out of bounds'
case (160) case (160)
msg = 'Texture index out of bounds' msg = 'texture index out of bounds'
case (170) case (170)
msg = 'Sum of phase fractions differs from 1' msg = 'sum of phase fractions differs from 1'
case (200) case (200)
msg = 'Unknown constitution specified' msg = 'unknown constitution specified'
case (201) case (201)
msg = 'Unknown homogenization specified' msg = 'unknown homogenization specified'
case (205) case (205)
msg = 'Unknown lattice structure encountered' msg = 'unknown lattice structure encountered'
case (210) case (210)
msg = 'Negative initial resistance' msg = 'negative initial resistance'
case (211) case (211)
msg = 'Non-positive reference shear rate' msg = 'non-positive reference shear rate'
case (212) case (212)
msg = 'Non-positive stress exponent' msg = 'non-positive stress exponent'
case (213) case (213)
msg = 'Non-positive saturation stress' msg = 'non-positive saturation stress'
case (214) case (214)
msg = 'Zero hardening exponent' msg = 'zero hardening exponent'
case (220) case (220)
msg = 'Negative initial dislocation density' msg = 'negative initial dislocation density'
case (221) case (221)
msg = 'Negative Bugers vector' msg = 'negative Burgers vector'
case (222) case (222)
msg = 'Negative activation energy for edge dislocation glide' msg = 'negative activation energy for edge dislocation glide'
case (223) case (223)
msg = 'Negative self diffusion energy' msg = 'negative self diffusion energy'
case (224) case (224)
msg = 'Non-positive diffusion prefactor' msg = 'non-positive diffusion prefactor'
case (225) case (225)
msg = 'No slip systems specified' msg = 'no slip systems specified'
case (226) case (226)
msg = 'Non-positive prefactor for dislocation velocity' msg = 'non-positive prefactor for dislocation velocity'
case (227) case (227)
msg = 'Non-positive prefactor for mean free path' msg = 'non-positive prefactor for mean free path'
case (228) case (228)
msg = 'Non-positive minimum stable dipole distance' msg = 'non-positive minimum stable dipole distance'
case (229) case (229)
msg = 'Non-positive hardening interaction coefficients' msg = 'non-positive hardening interaction coefficients'
case (230) case (230)
msg = 'Non-positive atomic volume' msg = 'non-positive atomic volume'
case (231) case (231)
msg = 'Non-positive prefactor for self-diffusion coefficient' msg = 'non-positive prefactor for self-diffusion coefficient' ! what is the difference to 224 ??
case (232) case (232)
msg = 'Non-positive activation energy' msg = 'non-positive activation energy'
case (233) case (233)
msg = 'Non-positive relevant dislocation density' msg = 'non-positive relevant dislocation density'
case (235) case (235)
msg = 'Material parameter in nonlocal constitutive phase out of bounds:' msg = 'material parameter in nonlocal constitutive phase out of bounds:'
case (236) case (236)
msg = 'Unknown material parameter in nonlocal constitutive phase:' msg = 'unknown material parameter in nonlocal constitutive phase:'
case (237) case (237)
msg = 'Singularity in internal stress calculation' msg = 'singularity in internal stress calculation'
case (240) case (240)
msg = 'Non-positive Taylor factor' msg = 'non-positive Taylor factor'
case (241) case (241)
msg = 'Non-positive hardening exponent' msg = 'non-positive hardening exponent'
case (242) case (242)
msg = 'Non-positive relevant slip resistance' msg = 'non-positive relevant slip resistance'
case (260) case (260)
msg = 'Non-positive relevant strain' msg = 'non-positive relevant strain'
case (261) case (261)
msg = 'Frequency for Stiffness update smaller than zero' msg = 'frequency of stiffness update < 0'
case (262) case (262)
msg = 'Frequency for Jacobian update of Lp residuum smaller than zero' msg = 'frequency of Jacobian update of Lp residuum < 0'
case (263) case (263)
msg = 'Non-positive perturbation value' msg = 'non-positive perturbation value'
case (264) case (264)
msg = 'Limit for homogenization loop too small' msg = 'limit for homogenization loop too small'
case (265) case (265)
msg = 'Limit for crystallite loop too small' msg = 'limit for crystallite loop too small'
case (266) case (266)
msg = 'Limit for state loop too small' msg = 'limit for state loop too small'
case (267) case (267)
msg = 'Limit for stress loop too small' msg = 'limit for stress loop too small'
case (268) case (268)
msg = 'Non-positive minimum substep size' msg = 'non-positive minimum substep size'
case (269) case (269)
msg = 'Non-positive relative tolerance for state' msg = 'non-positive relative state tolerance'
case (270) case (270)
msg = 'Non-positive relative tolerance for stress' msg = 'Non-positive relative stress tolerance'
case (271) case (271)
msg = 'Non-positive absolute tolerance for stress' msg = 'Non-positive absolute stress tolerance'
!* Error messages related to RGC numerical parameters <<<updated 31.07.2009>>> !* Error messages related to RGC numerical parameters <<<updated 31.07.2009>>>
case (272) case (272)
msg = 'Non-positive relative tolerance of residual in RGC' msg = 'non-positive relative tolerance of residual in RGC'
case (273) case (273)
msg = 'Non-positive absolute tolerance of residual in RGC' msg = 'non-positive absolute tolerance of residual in RGC'
case (274) case (274)
msg = 'Non-positive relative maximum of residual in RGC' msg = 'non-positive relative maximum of residual in RGC'
case (275) case (275)
msg = 'Non-positive absolute maximum of residual in RGC' msg = 'non-positive absolute maximum of residual in RGC'
case (276) case (276)
msg = 'Non-positive penalty perturbation in RGC' msg = 'non-positive penalty perturbation in RGC'
case (277) case (277)
msg = 'Non-positive relevant mismatch in RGC' msg = 'non-positive relevant mismatch in RGC'
case (278) case (278)
msg = 'Non-positive definite viscosity model in RGC' msg = 'non-positive definite viscosity model in RGC'
case (288) case (288)
msg = 'Non-positive maximum threshold of relaxation change in RGC' msg = 'non-positive maximum threshold of relaxation change in RGC'
case (289) case (289)
msg = 'Non-positive definite volume discrepancy penalty in RGC' msg = 'non-positive definite volume discrepancy penalty in RGC'
case (294) case (294)
msg = 'Non-positive tolerance for deformation gradient' msg = 'non-positive tolerance for deformation gradient'
case (298) case (298)
msg = 'Chosen integration method does not exist' msg = 'chosen integration method does not exist'
case (299) case (299)
msg = 'Chosen perturbation method does not exist' msg = 'chosen perturbation method does not exist'
case (300) case (300)
msg = 'This material can only be used with elements with three direct stress components' msg = 'this material can only be used with elements with three direct stress components'
case (500) case (500)
msg = 'Unknown lattice type specified' msg = 'unknown lattice type specified'
case (550) case (550)
msg = 'Unknown symmetry type specified' msg = 'unknown symmetry type specified'
case (600) case (600)
msg = 'Convergence not reached' msg = 'convergence not reached'
case (610) case (610)
msg = 'Stress loop not converged' msg = 'stress loop not converged'
case (666) case (666)
msg = 'Memory leak detected' msg = 'memory leak detected'
case (667) case (667)
msg = 'Invalid materialpoint result requested' msg = 'invalid materialpoint result requested'
case (670) case (670)
msg = 'math_check: quat -> axisAngle -> quat failed' msg = 'math_check: quat -> axisAngle -> quat failed'
@ -1351,10 +1375,10 @@ endfunction
msg = 'math_check: R -> euler -> R failed' msg = 'math_check: R -> euler -> R failed'
case (700) case (700)
msg = 'Singular matrix in stress iteration' msg = 'singular matrix in stress iteration'
case (800) case (800)
msg = 'Matrix inversion error' msg = 'matrix inversion error'
! Error messages related to parsing of Abaqus input file ! Error messages related to parsing of Abaqus input file
case (900) case (900)
@ -1366,7 +1390,7 @@ endfunction
case (903) case (903)
msg = 'PARSE ERROR: No Materials defined in input file (Look into section assigments)' msg = 'PARSE ERROR: No Materials defined in input file (Look into section assigments)'
case (904) case (904)
msg = 'PARSE ERROR: No elements could be assigned for Elset: '//ext_msg msg = 'PARSE ERROR: No elements could be assigned for Elset: '
case (905) case (905)
msg = 'PARSE ERROR: Error in mesh_abaqus_map_materials' msg = 'PARSE ERROR: Error in mesh_abaqus_map_materials'
case (906) case (906)
@ -1378,7 +1402,7 @@ endfunction
case (909) case (909)
msg = 'PARSE ERROR: Incorrect size of mesh_node in mesh_abaqus_build_nodes; must be equal to mesh_Nnodes' msg = 'PARSE ERROR: Incorrect size of mesh_node in mesh_abaqus_build_nodes; must be equal to mesh_Nnodes'
case(910) case(910)
msg = 'PARSE ERROR: Incorrect element type mapping in '//ext_msg msg = 'PARSE ERROR: Incorrect element type mapping in '
case default case default

View File

@ -71,7 +71,7 @@ subroutine constitutive_init()
use prec, only: pReal,pInt use prec, only: pReal,pInt
use debug, only: debug_verbosity, debug_selectiveDebugger, debug_e, debug_i, debug_g use debug, only: debug_verbosity, debug_selectiveDebugger, debug_e, debug_i, debug_g
use numerics, only: numerics_integrator use numerics, only: numerics_integrator
use IO, only: IO_error, IO_open_file, IO_open_jobFile use IO, only: IO_error, IO_open_file, IO_open_jobFile, IO_write_jobFile
use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips
use material use material
use constitutive_j2 use constitutive_j2
@ -100,7 +100,9 @@ logical knownConstitution
! --- PARSE CONSTITUTIONS FROM CONFIG FILE --- ! --- PARSE CONSTITUTIONS FROM CONFIG FILE ---
if(.not. IO_open_file(fileunit,material_configFile)) call IO_error (100) ! corrupt config file if (.not. IO_open_jobFile(fileunit,material_localFileExt)) then ! no local material configuration present...
if (.not. IO_open_file(fileunit,material_configFile)) call IO_error(100) ! ...and cannot open material.config file
endif
call constitutive_j2_init(fileunit) call constitutive_j2_init(fileunit)
call constitutive_phenopowerlaw_init(fileunit) call constitutive_phenopowerlaw_init(fileunit)
call constitutive_titanmod_init(fileunit) call constitutive_titanmod_init(fileunit)
@ -111,7 +113,7 @@ close(fileunit)
! --- WRITE DESCRIPTION FILE FOR CONSTITUTIVE PHASE OUTPUT --- ! --- WRITE DESCRIPTION FILE FOR CONSTITUTIVE PHASE OUTPUT ---
if(.not. IO_open_jobFile(fileunit,'outputConstitutive')) then ! problems in writing file if(.not. IO_write_jobFile(fileunit,'outputConstitutive')) then ! problems in writing file
call IO_error (50) call IO_error (50)
endif endif
do p = 1,material_Nphase do p = 1,material_Nphase

View File

@ -231,7 +231,9 @@ allocate(crystallite_sizePostResult(maxval(crystallite_Noutput), &
material_Ncrystallite)) ; crystallite_sizePostResult = 0_pInt material_Ncrystallite)) ; crystallite_sizePostResult = 0_pInt
if(.not. IO_open_file(file,material_configFile)) call IO_error (100) ! corrupt config file if (.not. IO_open_jobFile(file,material_localFileExt)) then ! no local material configuration present...
if (.not. IO_open_file(file,material_configFile)) call IO_error(100) ! ...and cannot open material.config file
endif
line = '' line = ''
section = 0 section = 0
@ -294,7 +296,7 @@ enddo
! write description file for crystallite output ! write description file for crystallite output
if(.not. IO_open_jobFile(file,'outputCrystallite')) call IO_error (50) ! problems in writing file if(.not. IO_write_jobFile(file,'outputCrystallite')) call IO_error (50) ! problems in writing file
do p = 1,material_Ncrystallite do p = 1,material_Ncrystallite
write(file,*) write(file,*)

View File

@ -75,7 +75,7 @@ subroutine homogenization_init(Temperature)
use prec, only: pReal,pInt use prec, only: pReal,pInt
use math, only: math_I3 use math, only: math_I3
use debug, only: debug_verbosity use debug, only: debug_verbosity
use IO, only: IO_error, IO_open_file, IO_open_jobFile use IO, only: IO_error, IO_open_file, IO_open_jobFile, IO_write_jobFile
use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips
use material use material
use constitutive, only: constitutive_maxSizePostResults use constitutive, only: constitutive_maxSizePostResults
@ -95,7 +95,9 @@ logical knownHomogenization
! --- PARSE HOMOGENIZATIONS FROM CONFIG FILE --- ! --- PARSE HOMOGENIZATIONS FROM CONFIG FILE ---
if(.not. IO_open_file(fileunit,material_configFile)) call IO_error (100) ! corrupt config file if (.not. IO_open_jobFile(fileunit,material_localFileExt)) then ! no local material configuration present...
if (.not. IO_open_file(fileunit,material_configFile)) call IO_error(100) ! ...and cannot open material.config file
endif
call homogenization_isostrain_init(fileunit) call homogenization_isostrain_init(fileunit)
call homogenization_RGC_init(fileunit) call homogenization_RGC_init(fileunit)
close(fileunit) close(fileunit)
@ -103,7 +105,7 @@ close(fileunit)
! --- WRITE DESCRIPTION FILE FOR HOMOGENIZATION OUTPUT --- ! --- WRITE DESCRIPTION FILE FOR HOMOGENIZATION OUTPUT ---
if(.not. IO_open_jobFile(fileunit,'outputHomogenization')) then ! problems in writing file if(.not. IO_write_jobFile(fileunit,'outputHomogenization')) then ! problems in writing file
call IO_error (50) call IO_error (50)
endif endif
do p = 1,material_Nhomogenization do p = 1,material_Nhomogenization

View File

@ -706,8 +706,8 @@ subroutine lattice_init()
!************************************** !**************************************
!* Module initialization * !* Module initialization *
!************************************** !**************************************
use IO, only: IO_open_file,IO_countSections,IO_countTagInPart,IO_error use IO, only: IO_open_file,IO_open_jobFile,IO_countSections,IO_countTagInPart,IO_error
use material, only: material_configfile,material_partPhase use material, only: material_configfile,material_localFileExt,material_partPhase
use debug, only: debug_verbosity use debug, only: debug_verbosity
implicit none implicit none
@ -721,7 +721,9 @@ subroutine lattice_init()
write(6,*) write(6,*)
!$OMP END CRITICAL (write2out) !$OMP END CRITICAL (write2out)
if(.not. IO_open_file(fileunit,material_configFile)) call IO_error(100) ! cannot open config file if (.not. IO_open_jobFile(fileunit,material_localFileExt)) then ! no local material configuration present...
if (.not. IO_open_file(fileunit,material_configFile)) call IO_error(100) ! ...and cannot open material.config file
endif
Nsections = IO_countSections(fileunit,material_partPhase) Nsections = IO_countSections(fileunit,material_partPhase)
lattice_Nstructure = 2_pInt + sum(IO_countTagInPart(fileunit,material_partPhase,'covera_ratio',Nsections)) ! fcc + bcc + all hex lattice_Nstructure = 2_pInt + sum(IO_countTagInPart(fileunit,material_partPhase,'covera_ratio',Nsections)) ! fcc + bcc + all hex
! lattice_Nstructure = Nsections + 2_pInt ! most conservative assumption ! lattice_Nstructure = Nsections + 2_pInt ! most conservative assumption

View File

@ -31,12 +31,13 @@ MODULE material
use prec, only: pReal,pInt use prec, only: pReal,pInt
implicit none implicit none
character(len=64), parameter :: material_configFile = 'material.config' character(len=64), parameter :: material_configFile = 'material.config'
character(len=64), parameter :: material_localFileExt = 'materialConfig'
character(len=32), parameter :: material_partHomogenization = 'homogenization' character(len=32), parameter :: material_partHomogenization = 'homogenization'
character(len=32), parameter :: material_partMicrostructure = 'microstructure' character(len=32), parameter :: material_partMicrostructure = 'microstructure'
character(len=32), parameter :: material_partCrystallite = 'crystallite' character(len=32), parameter :: material_partCrystallite = 'crystallite'
character(len=32), parameter :: material_partPhase = 'phase' character(len=32), parameter :: material_partPhase = 'phase'
character(len=32), parameter :: material_partTexture = 'texture' character(len=32), parameter :: material_partTexture = 'texture'
!************************************* !*************************************
@ -106,7 +107,7 @@ subroutine material_init()
!* Module initialization * !* Module initialization *
!************************************** !**************************************
use prec, only: pReal,pInt use prec, only: pReal,pInt
use IO, only: IO_error, IO_open_file use IO, only: IO_error, IO_open_file, IO_open_jobFile
use debug, only: debug_verbosity use debug, only: debug_verbosity
implicit none implicit none
@ -121,7 +122,9 @@ subroutine material_init()
write(6,*) write(6,*)
!$OMP END CRITICAL (write2out) !$OMP END CRITICAL (write2out)
if(.not. IO_open_file(fileunit,material_configFile)) call IO_error(100) ! cannot open config file if (.not. IO_open_jobFile(fileunit,material_localFileExt)) then ! no local material configuration present...
if (.not. IO_open_file(fileunit,material_configFile)) call IO_error(100) ! ...and cannot open material.config file
endif
call material_parseHomogenization(fileunit,material_partHomogenization) call material_parseHomogenization(fileunit,material_partHomogenization)
call material_parseMicrostructure(fileunit,material_partMicrostructure) call material_parseMicrostructure(fileunit,material_partMicrostructure)
call material_parseCrystallite(fileunit,material_partCrystallite) call material_parseCrystallite(fileunit,material_partCrystallite)