parsing of material.config file now expects adequate number of (slip/twin) family entries according to given lattice type.

used to read up to maxN, but that caused unnecessary IO_warnings...
This commit is contained in:
Philip Eisenlohr 2013-02-14 22:24:55 +00:00
parent 30024af6c2
commit c1cf446774
6 changed files with 415 additions and 403 deletions

View File

@ -129,6 +129,9 @@ subroutine constitutive_dislotwin_init(file)
!************************************** !**************************************
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: pInt,pReal use prec, only: pInt,pReal
use debug, only: debug_level,&
debug_constitutive,&
debug_levelBasic
use math, only: math_Mandel3333to66,math_Voigt66to3333,math_mul3x3 use math, only: math_Mandel3333to66,math_Voigt66to3333,math_mul3x3
use mesh, only: mesh_maxNips, mesh_NcpElems use mesh, only: mesh_maxNips, mesh_NcpElems
use IO use IO
@ -140,8 +143,11 @@ integer(pInt), intent(in) :: file
!* Local variables !* Local variables
integer(pInt), parameter :: maxNchunks = 21_pInt integer(pInt), parameter :: maxNchunks = 21_pInt
integer(pInt), dimension(1+2*maxNchunks) :: positions integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt), dimension(6) :: configNchunks
integer(pInt) :: section, maxNinstance,mySize=0_pInt,myStructure,maxTotalNslip,maxTotalNtwin,& integer(pInt) :: section, maxNinstance,mySize=0_pInt,myStructure,maxTotalNslip,maxTotalNtwin,&
f,i,j,k,l,m,n,o,p,q,r,s,ns,nt, & f,i,j,k,l,m,n,o,p,q,r,s,ns,nt, &
Nchunks_SlipSlip, Nchunks_SlipTwin, Nchunks_TwinSlip, Nchunks_TwinTwin, &
Nchunks_SlipFamilies, Nchunks_TwinFamilies, &
index_myFamily, index_otherFamily index_myFamily, index_otherFamily
character(len=64) tag character(len=64) tag
character(len=1024) :: line = '' ! to start initialized character(len=1024) :: line = '' ! to start initialized
@ -154,6 +160,18 @@ write(6,*) '$Id$'
maxNinstance = int(count(phase_plasticity == constitutive_dislotwin_label),pInt) maxNinstance = int(count(phase_plasticity == constitutive_dislotwin_label),pInt)
if (maxNinstance == 0_pInt) return if (maxNinstance == 0_pInt) return
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then
write(6,'(a16,1x,i5)') '# instances:',maxNinstance
write(6,*)
endif
Nchunks_SlipFamilies = lattice_maxNslipFamily
Nchunks_TwinFamilies = lattice_maxNtwinFamily
Nchunks_SlipSlip = lattice_maxNinteraction
Nchunks_SlipTwin = lattice_maxNinteraction
Nchunks_TwinSlip = lattice_maxNinteraction
Nchunks_TwinTwin = lattice_maxNinteraction
!* Space allocation for global variables !* Space allocation for global variables
allocate(constitutive_dislotwin_sizeDotState(maxNinstance)) allocate(constitutive_dislotwin_sizeDotState(maxNinstance))
constitutive_dislotwin_sizeDotState = 0_pInt constitutive_dislotwin_sizeDotState = 0_pInt
@ -285,9 +303,16 @@ do ! read thru sections of
constitutive_dislotwin_Noutput(i) = constitutive_dislotwin_Noutput(i) + 1_pInt constitutive_dislotwin_Noutput(i) = constitutive_dislotwin_Noutput(i) + 1_pInt
constitutive_dislotwin_output(constitutive_dislotwin_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_dislotwin_output(constitutive_dislotwin_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure') case ('lattice_structure')
constitutive_dislotwin_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_dislotwin_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
configNchunks = lattice_configNchunks(constitutive_dislotwin_structureName(i))
Nchunks_SlipFamilies = configNchunks(1)
Nchunks_TwinFamilies = configNchunks(2)
Nchunks_SlipSlip = configNchunks(3)
Nchunks_SlipTwin = configNchunks(4)
Nchunks_TwinSlip = configNchunks(5)
Nchunks_TwinTwin = configNchunks(6)
case ('covera_ratio') case ('covera_ratio')
constitutive_dislotwin_CoverA(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_CoverA(i) = IO_floatValue(line,positions,2_pInt)
case ('c11') case ('c11')
constitutive_dislotwin_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
case ('c12') case ('c12')
@ -307,107 +332,107 @@ do ! read thru sections of
case ('c66') case ('c66')
constitutive_dislotwin_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
case ('nslip') case ('nslip')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j) constitutive_dislotwin_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j)
enddo enddo
case ('ntwin') case ('ntwin')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_dislotwin_Ntwin(j,i) = IO_intValue(line,positions,1_pInt+j) constitutive_dislotwin_Ntwin(j,i) = IO_intValue(line,positions,1_pInt+j)
enddo enddo
case ('rhoedge0') case ('rhoedge0')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_rhoEdge0(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_rhoEdge0(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('rhoedgedip0') case ('rhoedgedip0')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_rhoEdgeDip0(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_rhoEdgeDip0(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('slipburgers') case ('slipburgers')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_burgersPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_burgersPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('twinburgers') case ('twinburgers')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_dislotwin_burgersPerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_burgersPerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('qedge') case ('qedge')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_QedgePerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_QedgePerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('v0') case ('v0')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_v0PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_v0PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('ndot0') case ('ndot0')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_dislotwin_Ndot0PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_Ndot0PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('twinsize') case ('twinsize')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_dislotwin_twinsizePerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_twinsizePerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('clambdaslip') case ('clambdaslip')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_dislotwin_CLambdaSlipPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_CLambdaSlipPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('grainsize') case ('grainsize')
constitutive_dislotwin_GrainSize(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_GrainSize(i) = IO_floatValue(line,positions,2_pInt)
case ('maxtwinfraction') case ('maxtwinfraction')
constitutive_dislotwin_MaxTwinFraction(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_MaxTwinFraction(i) = IO_floatValue(line,positions,2_pInt)
case ('pexponent') case ('pexponent')
constitutive_dislotwin_p(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_p(i) = IO_floatValue(line,positions,2_pInt)
case ('qexponent') case ('qexponent')
constitutive_dislotwin_q(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_q(i) = IO_floatValue(line,positions,2_pInt)
case ('rexponent') case ('rexponent')
constitutive_dislotwin_r(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_r(i) = IO_floatValue(line,positions,2_pInt)
case ('d0') case ('d0')
constitutive_dislotwin_D0(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_D0(i) = IO_floatValue(line,positions,2_pInt)
case ('qsd') case ('qsd')
constitutive_dislotwin_Qsd(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_Qsd(i) = IO_floatValue(line,positions,2_pInt)
case ('atol_rho') case ('atol_rho')
constitutive_dislotwin_aTolRho(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_aTolRho(i) = IO_floatValue(line,positions,2_pInt)
case ('atol_twinfrac') case ('atol_twinfrac')
constitutive_dislotwin_aTolTwinFrac(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_aTolTwinFrac(i) = IO_floatValue(line,positions,2_pInt)
case ('cmfptwin') case ('cmfptwin')
constitutive_dislotwin_Cmfptwin(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_Cmfptwin(i) = IO_floatValue(line,positions,2_pInt)
case ('cthresholdtwin') case ('cthresholdtwin')
constitutive_dislotwin_Cthresholdtwin(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_Cthresholdtwin(i) = IO_floatValue(line,positions,2_pInt)
case ('solidsolutionstrength') case ('solidsolutionstrength')
constitutive_dislotwin_SolidSolutionStrength(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_SolidSolutionStrength(i) = IO_floatValue(line,positions,2_pInt)
case ('l0') case ('l0')
constitutive_dislotwin_L0(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_L0(i) = IO_floatValue(line,positions,2_pInt)
case ('cedgedipmindistance') case ('cedgedipmindistance')
constitutive_dislotwin_CEdgeDipMinDistance(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_CEdgeDipMinDistance(i) = IO_floatValue(line,positions,2_pInt)
case ('catomicvolume') case ('catomicvolume')
constitutive_dislotwin_CAtomicVolume(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_CAtomicVolume(i) = IO_floatValue(line,positions,2_pInt)
case ('interaction_slipslip','interactionslipslip') case ('interaction_slipslip','interactionslipslip')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_SlipSlip
constitutive_dislotwin_interaction_SlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_interaction_SlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('interaction_sliptwin','interactionsliptwin') case ('interaction_sliptwin','interactionsliptwin')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_SlipTwin
constitutive_dislotwin_interaction_SlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_interaction_SlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('interaction_twinslip','interactiontwinslip') case ('interaction_twinslip','interactiontwinslip')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_TwinSlip
constitutive_dislotwin_interaction_TwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_interaction_TwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('interaction_twintwin','interactiontwintwin') case ('interaction_twintwin','interactiontwintwin')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_TwinTwin
constitutive_dislotwin_interaction_TwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_dislotwin_interaction_TwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
case ('sfe_0k') case ('sfe_0k')
constitutive_dislotwin_SFE_0K(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_SFE_0K(i) = IO_floatValue(line,positions,2_pInt)
case ('dsfe_dt') case ('dsfe_dt')
constitutive_dislotwin_dSFE_dT(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_dSFE_dT(i) = IO_floatValue(line,positions,2_pInt)
case ('shearbandresistance') case ('shearbandresistance')
constitutive_dislotwin_sbResistance(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_sbResistance(i) = IO_floatValue(line,positions,2_pInt)
case ('shearbandvelocity') case ('shearbandvelocity')
constitutive_dislotwin_sbVelocity(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_sbVelocity(i) = IO_floatValue(line,positions,2_pInt)
case ('qedgepersbsystem') case ('qedgepersbsystem')
constitutive_dislotwin_sbQedge(i) = IO_floatValue(line,positions,2_pInt) constitutive_dislotwin_sbQedge(i) = IO_floatValue(line,positions,2_pInt)
case default case default
call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_dislotwin_label//')') call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_dislotwin_label//')')
end select end select
endif endif
enddo enddo

View File

@ -216,51 +216,51 @@ subroutine constitutive_j2_init(myFile)
case ('lattice_structure') case ('lattice_structure')
constitutive_j2_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_j2_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('c11') case ('c11')
constitutive_j2_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
case ('c12') case ('c12')
constitutive_j2_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
case ('c13') case ('c13')
constitutive_j2_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
case ('c22') case ('c22')
constitutive_j2_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
case ('c23') case ('c23')
constitutive_j2_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
case ('c33') case ('c33')
constitutive_j2_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
case ('c44') case ('c44')
constitutive_j2_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
case ('c55') case ('c55')
constitutive_j2_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
case ('c66') case ('c66')
constitutive_j2_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
case ('tau0') case ('tau0')
constitutive_j2_tau0(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_tau0(i) = IO_floatValue(line,positions,2_pInt)
case ('gdot0') case ('gdot0')
constitutive_j2_gdot0(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_gdot0(i) = IO_floatValue(line,positions,2_pInt)
case ('n') case ('n')
constitutive_j2_n(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_n(i) = IO_floatValue(line,positions,2_pInt)
case ('h0') case ('h0')
constitutive_j2_h0(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_h0(i) = IO_floatValue(line,positions,2_pInt)
case ('h0_slope','slopelnrate') case ('h0_slope','slopelnrate')
constitutive_j2_h0_slopeLnRate(i) = IO_floatValue(line,positions,2) constitutive_j2_h0_slopeLnRate(i) = IO_floatValue(line,positions,2_pInt)
case ('tausat') case ('tausat')
constitutive_j2_tausat(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_tausat(i) = IO_floatValue(line,positions,2_pInt)
case ('tausat_sinhfita') case ('tausat_sinhfita')
constitutive_j2_tausat_SinhFitA(i) = IO_floatValue(line,positions,2) constitutive_j2_tausat_SinhFitA(i) = IO_floatValue(line,positions,2_pInt)
case ('tausat_sinhfitb') case ('tausat_sinhfitb')
constitutive_j2_tausat_SinhFitB(i) = IO_floatValue(line,positions,2) constitutive_j2_tausat_SinhFitB(i) = IO_floatValue(line,positions,2_pInt)
case ('tausat_sinhfitc') case ('tausat_sinhfitc')
constitutive_j2_tausat_SinhFitC(i) = IO_floatValue(line,positions,2) constitutive_j2_tausat_SinhFitC(i) = IO_floatValue(line,positions,2_pInt)
case ('tausat_sinhfitd') case ('tausat_sinhfitd')
constitutive_j2_tausat_SinhFitD(i) = IO_floatValue(line,positions,2) constitutive_j2_tausat_SinhFitD(i) = IO_floatValue(line,positions,2_pInt)
case ('a', 'w0') case ('a', 'w0')
constitutive_j2_a(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_a(i) = IO_floatValue(line,positions,2_pInt)
case ('taylorfactor') case ('taylorfactor')
constitutive_j2_fTaylor(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_fTaylor(i) = IO_floatValue(line,positions,2_pInt)
case ('atol_resistance') case ('atol_resistance')
constitutive_j2_aTolResistance(i) = IO_floatValue(line,positions,2_pInt) constitutive_j2_aTolResistance(i) = IO_floatValue(line,positions,2_pInt)
case default case default
call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_j2_label//')') call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_j2_label//')')
end select end select
endif endif
enddo enddo

View File

@ -228,17 +228,7 @@ use material, only: homogenization_maxNgrains, &
phase_plasticity, & phase_plasticity, &
phase_plasticityInstance, & phase_plasticityInstance, &
phase_Noutput phase_Noutput
use lattice, only: lattice_maxNslipFamily, & use lattice
lattice_maxNslip, &
lattice_maxNinteraction, &
lattice_NslipSystem, &
lattice_initializeStructure, &
lattice_symmetrizeC66, &
lattice_sd, &
lattice_sn, &
lattice_st, &
lattice_interactionSlipSlip, &
lattice_maxNonSchmid
!*** output variables !*** output variables
@ -249,6 +239,7 @@ integer(pInt), intent(in) :: myFile
integer(pInt), parameter :: maxNchunks = 21_pInt integer(pInt), parameter :: maxNchunks = 21_pInt
integer(pInt), & integer(pInt), &
dimension(1_pInt+2_pInt*maxNchunks) :: positions dimension(1_pInt+2_pInt*maxNchunks) :: positions
integer(pInt), dimension(6) :: configNchunks
integer(pInt) :: section, & integer(pInt) :: section, &
maxNinstance, & maxNinstance, &
maxTotalNslip, & maxTotalNslip, &
@ -262,6 +253,8 @@ integer(pInt) :: section, &
s1, & ! index of my slip system s1, & ! index of my slip system
s2, & ! index of my slip system s2, & ! index of my slip system
it, & ! index of my interaction type it, & ! index of my interaction type
Nchunks_SlipSlip, &
Nchunks_SlipFamilies, &
mySize = 0_pInt ! to suppress warnings, safe as init is called only once mySize = 0_pInt ! to suppress warnings, safe as init is called only once
character(len=64) tag character(len=64) tag
character(len=1024) :: line = '' ! to start initialized character(len=1024) :: line = '' ! to start initialized
@ -276,10 +269,10 @@ if (maxNinstance == 0) return
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then
write(6,'(a16,1x,i5)') '# instances:',maxNinstance write(6,'(a16,1x,i5)') '# instances:',maxNinstance
write(6,*)
endif endif
!*** memory allocation for global variables
!*** space allocation for global variables
allocate(constitutive_nonlocal_sizeDotState(maxNinstance)) allocate(constitutive_nonlocal_sizeDotState(maxNinstance))
allocate(constitutive_nonlocal_sizeDependentState(maxNinstance)) allocate(constitutive_nonlocal_sizeDependentState(maxNinstance))
@ -433,8 +426,11 @@ do
constitutive_nonlocal_output(constitutive_nonlocal_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_nonlocal_output(constitutive_nonlocal_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure') case ('lattice_structure')
constitutive_nonlocal_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_nonlocal_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
configNchunks = lattice_configNchunks(constitutive_nonlocal_structureName(i))
Nchunks_SlipFamilies = configNchunks(1)
Nchunks_SlipSlip = configNchunks(3)
case ('c/a_ratio','covera_ratio') case ('c/a_ratio','covera_ratio')
constitutive_nonlocal_CoverA(i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_CoverA(i) = IO_floatValue(line,positions,2_pInt)
case ('c11') case ('c11')
constitutive_nonlocal_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
case ('c12') case ('c12')
@ -454,49 +450,49 @@ do
case ('c66') case ('c66')
constitutive_nonlocal_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
case ('nslip') case ('nslip')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_Nslip(f,i) = IO_intValue(line,positions,1_pInt+f) constitutive_nonlocal_Nslip(f,i) = IO_intValue(line,positions,1_pInt+f)
enddo enddo
case ('rhosgledgepos0') case ('rhosgledgepos0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_rhoSglEdgePos0(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_rhoSglEdgePos0(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('rhosgledgeneg0') case ('rhosgledgeneg0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_rhoSglEdgeNeg0(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_rhoSglEdgeNeg0(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('rhosglscrewpos0') case ('rhosglscrewpos0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_rhoSglScrewPos0(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_rhoSglScrewPos0(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('rhosglscrewneg0') case ('rhosglscrewneg0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_rhoSglScrewNeg0(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_rhoSglScrewNeg0(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('rhodipedge0') case ('rhodipedge0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_rhoDipEdge0(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_rhoDipEdge0(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('rhodipscrew0') case ('rhodipscrew0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_rhoDipScrew0(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_rhoDipScrew0(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('lambda0') case ('lambda0')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_lambda0PerSlipFamily(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_lambda0PerSlipFamily(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case ('burgers') case ('burgers')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_burgersPerSlipFamily(f,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_burgersPerSlipFamily(f,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case('cutoffradius','r') case('cutoffradius','r')
constitutive_nonlocal_R(i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_R(i) = IO_floatValue(line,positions,2_pInt)
case('minimumdipoleheightedge','ddipminedge') case('minimumdipoleheightedge','ddipminedge')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,1_pInt,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,1_pInt,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case('minimumdipoleheightscrew','ddipminscrew') case('minimumdipoleheightscrew','ddipminscrew')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,2_pInt,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_minimumDipoleHeightPerSlipFamily(f,2_pInt,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case('atomicvolume') case('atomicvolume')
@ -512,7 +508,7 @@ do
case('significantn','significant_n','significantdislocations','significant_dislcations') case('significantn','significant_n','significantdislocations','significant_dislcations')
constitutive_nonlocal_significantN(i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_significantN(i) = IO_floatValue(line,positions,2_pInt)
case ('interaction_slipslip') case ('interaction_slipslip')
do it = 1_pInt, lattice_maxNinteraction do it = 1_pInt, Nchunks_SlipSlip
constitutive_nonlocal_interactionSlipSlip(it,i) = IO_floatValue(line,positions,1_pInt+it) constitutive_nonlocal_interactionSlipSlip(it,i) = IO_floatValue(line,positions,1_pInt+it)
enddo enddo
case('linetension','linetensioneffect','linetension_effect') case('linetension','linetensioneffect','linetension_effect')
@ -520,11 +516,11 @@ do
case('edgejog','edgejogs','edgejogeffect','edgejog_effect') case('edgejog','edgejogs','edgejogeffect','edgejog_effect')
constitutive_nonlocal_edgeJogFactor(i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_edgeJogFactor(i) = IO_floatValue(line,positions,2_pInt)
case('peierlsstressedge','peierlsstress_edge') case('peierlsstressedge','peierlsstress_edge')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_peierlsStressPerSlipFamily(f,1_pInt,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_peierlsStressPerSlipFamily(f,1_pInt,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case('peierlsstressscrew','peierlsstress_screw') case('peierlsstressscrew','peierlsstress_screw')
do f = 1_pInt, lattice_maxNslipFamily do f = 1_pInt, Nchunks_SlipFamilies
constitutive_nonlocal_peierlsStressPerSlipFamily(f,2_pInt,i) = IO_floatValue(line,positions,1_pInt+f) constitutive_nonlocal_peierlsStressPerSlipFamily(f,2_pInt,i) = IO_floatValue(line,positions,1_pInt+f)
enddo enddo
case('doublekinkwidth') case('doublekinkwidth')

View File

@ -131,6 +131,7 @@ subroutine constitutive_phenopowerlaw_init(myFile)
integer(pInt), intent(in) :: myFile integer(pInt), intent(in) :: myFile
integer(pInt), parameter :: maxNchunks = lattice_maxNinteraction + 1_pInt integer(pInt), parameter :: maxNchunks = lattice_maxNinteraction + 1_pInt
integer(pInt), dimension(1+2*maxNchunks) :: positions integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt), dimension(6) :: configNchunks
integer(pInt) :: section, maxNinstance, i,j,k, f,o, & integer(pInt) :: section, maxNinstance, i,j,k, f,o, &
Nchunks_SlipSlip, Nchunks_SlipTwin, Nchunks_TwinSlip, Nchunks_TwinTwin, & Nchunks_SlipSlip, Nchunks_SlipTwin, Nchunks_TwinSlip, Nchunks_TwinTwin, &
Nchunks_SlipFamilies, Nchunks_TwinFamilies, & Nchunks_SlipFamilies, Nchunks_TwinFamilies, &
@ -146,17 +147,18 @@ subroutine constitutive_phenopowerlaw_init(myFile)
maxNinstance = int(count(phase_plasticity == constitutive_phenopowerlaw_label),pInt) maxNinstance = int(count(phase_plasticity == constitutive_phenopowerlaw_label),pInt)
if (maxNinstance == 0) return if (maxNinstance == 0) return
Nchunks_SlipSlip = lattice_maxNinteraction
Nchunks_SlipTwin = lattice_maxNinteraction
Nchunks_TwinSlip = lattice_maxNinteraction
Nchunks_TwinTwin = lattice_maxNinteraction
Nchunks_SlipFamilies = lattice_maxNslipFamily
Nchunks_TwinFamilies = lattice_maxNtwinFamily
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then
write(6,'(a16,1x,i5)') '# instances:',maxNinstance write(6,'(a16,1x,i5)') '# instances:',maxNinstance
write(6,*) write(6,*)
endif endif
Nchunks_SlipFamilies = lattice_maxNslipFamily
Nchunks_TwinFamilies = lattice_maxNtwinFamily
Nchunks_SlipSlip = lattice_maxNinteraction
Nchunks_SlipTwin = lattice_maxNinteraction
Nchunks_TwinSlip = lattice_maxNinteraction
Nchunks_TwinTwin = lattice_maxNinteraction
allocate(constitutive_phenopowerlaw_sizeDotState(maxNinstance)) allocate(constitutive_phenopowerlaw_sizeDotState(maxNinstance))
constitutive_phenopowerlaw_sizeDotState = 0_pInt constitutive_phenopowerlaw_sizeDotState = 0_pInt
allocate(constitutive_phenopowerlaw_sizeState(maxNinstance)) allocate(constitutive_phenopowerlaw_sizeState(maxNinstance))
@ -264,29 +266,13 @@ subroutine constitutive_phenopowerlaw_init(myFile)
IO_lc(IO_stringValue(line,positions,2_pInt)) IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure') case ('lattice_structure')
constitutive_phenopowerlaw_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_phenopowerlaw_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
select case (constitutive_phenopowerlaw_structureName(i)) configNchunks = lattice_configNchunks(constitutive_phenopowerlaw_structureName(i))
case ('fcc') Nchunks_SlipFamilies = configNchunks(1)
Nchunks_SlipSlip = maxval(lattice_fcc_interactionSlipSlip) Nchunks_TwinFamilies = configNchunks(2)
Nchunks_SlipTwin = maxval(lattice_fcc_interactionSlipTwin) Nchunks_SlipSlip = configNchunks(3)
Nchunks_TwinSlip = maxval(lattice_fcc_interactionTwinSlip) Nchunks_SlipTwin = configNchunks(4)
Nchunks_TwinTwin = maxval(lattice_fcc_interactionTwinTwin) Nchunks_TwinSlip = configNchunks(5)
Nchunks_SlipFamilies = count(lattice_fcc_NslipSystem > 0_pInt) Nchunks_TwinTwin = configNchunks(6)
Nchunks_TwinFamilies = count(lattice_fcc_NtwinSystem > 0_pInt)
case ('bcc')
Nchunks_SlipSlip = maxval(lattice_bcc_interactionSlipSlip)
Nchunks_SlipTwin = maxval(lattice_bcc_interactionSlipTwin)
Nchunks_TwinSlip = maxval(lattice_bcc_interactionTwinSlip)
Nchunks_TwinTwin = maxval(lattice_bcc_interactionTwinTwin)
Nchunks_SlipFamilies = count(lattice_bcc_NslipSystem > 0_pInt)
Nchunks_TwinFamilies = count(lattice_bcc_NtwinSystem > 0_pInt)
case ('hex')
Nchunks_SlipSlip = maxval(lattice_hex_interactionSlipSlip)
Nchunks_SlipTwin = maxval(lattice_hex_interactionSlipTwin)
Nchunks_TwinSlip = maxval(lattice_hex_interactionTwinSlip)
Nchunks_TwinTwin = maxval(lattice_hex_interactionTwinTwin)
Nchunks_SlipFamilies = count(lattice_hex_NslipSystem > 0_pInt)
Nchunks_TwinFamilies = count(lattice_hex_NtwinSystem > 0_pInt)
end select
case ('covera_ratio') case ('covera_ratio')
constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt) constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt)
case ('c11') case ('c11')

View File

@ -233,6 +233,9 @@ subroutine constitutive_titanmod_init(file)
!************************************** !**************************************
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: pInt,pReal use prec, only: pInt,pReal
use debug, only: debug_level,&
debug_constitutive,&
debug_levelBasic
use math, only: math_Mandel3333to66,math_Voigt66to3333,math_mul3x3 use math, only: math_Mandel3333to66,math_Voigt66to3333,math_mul3x3
use IO use IO
use material use material
@ -243,8 +246,11 @@ integer(pInt), intent(in) :: file
!* Local variables !* Local variables
integer(pInt), parameter :: maxNchunks = 21_pInt integer(pInt), parameter :: maxNchunks = 21_pInt
integer(pInt), dimension(1_pInt+2_pInt*maxNchunks) :: positions integer(pInt), dimension(1_pInt+2_pInt*maxNchunks) :: positions
integer(pInt), dimension(6) :: configNchunks
integer(pInt) :: section,f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t,t1,t2,ns,nt,& integer(pInt) :: section,f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t,t1,t2,ns,nt,&
mySize = 0_pInt,myStructure,maxTotalNslip,maxTotalNtwin Nchunks_SlipSlip, Nchunks_SlipTwin, Nchunks_TwinSlip, Nchunks_TwinTwin, &
Nchunks_SlipFamilies, Nchunks_TwinFamilies, &
mySize,myStructure,maxTotalNslip,maxTotalNtwin
integer :: maxNinstance !no pInt integer :: maxNinstance !no pInt
character(len=64) :: tag character(len=64) :: tag
character(len=1024) :: line = '' ! to start initialized character(len=1024) :: line = '' ! to start initialized
@ -257,7 +263,19 @@ write(6,*) '$Id$'
maxNinstance = count(phase_plasticity == constitutive_titanmod_label) maxNinstance = count(phase_plasticity == constitutive_titanmod_label)
if (maxNinstance == 0) return if (maxNinstance == 0) return
!* Space allocation for global variables if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then
write(6,'(a16,1x,i5)') '# instances:',maxNinstance
write(6,*)
endif
Nchunks_SlipFamilies = lattice_maxNslipFamily
Nchunks_TwinFamilies = lattice_maxNtwinFamily
Nchunks_SlipSlip = lattice_maxNinteraction
Nchunks_SlipTwin = lattice_maxNinteraction
Nchunks_TwinSlip = lattice_maxNinteraction
Nchunks_TwinTwin = lattice_maxNinteraction
!* memory allocation for global variables
allocate(constitutive_titanmod_sizeDotState(maxNinstance)) allocate(constitutive_titanmod_sizeDotState(maxNinstance))
constitutive_titanmod_sizeDotState = 0_pInt constitutive_titanmod_sizeDotState = 0_pInt
allocate(constitutive_titanmod_sizeState(maxNinstance)) allocate(constitutive_titanmod_sizeState(maxNinstance))
@ -394,13 +412,11 @@ allocate(constitutive_titanmod_interactionTwinSlip(lattice_maxNinteraction,maxNi
allocate(constitutive_titanmod_interactionTwinTwin(lattice_maxNinteraction,maxNinstance)) allocate(constitutive_titanmod_interactionTwinTwin(lattice_maxNinteraction,maxNinstance))
constitutive_titanmod_interactionTwinTwin = 0.0_pReal constitutive_titanmod_interactionTwinTwin = 0.0_pReal
!* Readout data from material.config file !* Read data from material.config file
rewind(file) rewind(file)
line = '' line = ''
section = 0_pInt section = 0_pInt
write(6,*) 'titanmod: Reading material parameters from material config file'
do while (IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase> do while (IO_lc(IO_getTag(line,'<','>')) /= 'phase') ! wind forward to <phase>
read(file,'(a1024)',END=100) line read(file,'(a1024)',END=100) line
enddo enddo
@ -423,244 +439,195 @@ enddo
case ('(output)') case ('(output)')
constitutive_titanmod_Noutput(i) = constitutive_titanmod_Noutput(i) + 1_pInt constitutive_titanmod_Noutput(i) = constitutive_titanmod_Noutput(i) + 1_pInt
constitutive_titanmod_output(constitutive_titanmod_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_titanmod_output(constitutive_titanmod_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
write(6,*) tag,constitutive_titanmod_output(constitutive_titanmod_Noutput(i),i)
case ('lattice_structure') case ('lattice_structure')
constitutive_titanmod_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_titanmod_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
write(6,*) tag,constitutive_titanmod_structureName(i) configNchunks = lattice_configNchunks(constitutive_titanmod_structureName(i))
Nchunks_SlipFamilies = configNchunks(1)
Nchunks_TwinFamilies = configNchunks(2)
Nchunks_SlipSlip = configNchunks(3)
Nchunks_SlipTwin = configNchunks(4)
Nchunks_TwinSlip = configNchunks(5)
Nchunks_TwinTwin = configNchunks(6)
case ('covera_ratio') case ('covera_ratio')
constitutive_titanmod_CoverA(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_CoverA(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_CoverA(i)
case ('c11') case ('c11')
constitutive_titanmod_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(1,1,i)
case ('c12') case ('c12')
constitutive_titanmod_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(1,1,i)
case ('c13') case ('c13')
constitutive_titanmod_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(1,1,i)
case ('c22') case ('c22')
constitutive_titanmod_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(2,2,i)
case ('c23') case ('c23')
constitutive_titanmod_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(2,3,i)
case ('c33') case ('c33')
constitutive_titanmod_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(3,3,i)
case ('c44') case ('c44')
constitutive_titanmod_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(4,4,i)
case ('c55') case ('c55')
constitutive_titanmod_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(5,5,i)
case ('c66') case ('c66')
constitutive_titanmod_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_Cslip_66(6,6,i)
case ('debyefrequency') case ('debyefrequency')
constitutive_titanmod_debyefrequency(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_debyefrequency(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_debyefrequency(i)
case ('kinkf0') case ('kinkf0')
constitutive_titanmod_kinkf0(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_kinkf0(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag,constitutive_titanmod_kinkf0(i)
case ('nslip') case ('nslip')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j) constitutive_titanmod_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_Nslip(1:4,i)
case ('ntwin') case ('ntwin')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_Ntwin(j,i) = IO_intValue(line,positions,1_pInt+j) constitutive_titanmod_Ntwin(j,i) = IO_intValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_Ntwin(1:4,i)
case ('rho_edge0') case ('rho_edge0')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_rho_edge0(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_rho_edge0(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_rho_edge0(1:4,i)
case ('rho_screw0') case ('rho_screw0')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_rho_screw0(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_rho_screw0(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_rho_screw0(1:4,i)
case ('slipburgers') case ('slipburgers')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_burgersPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_burgersPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_burgersPerSlipFamily(1:4,i)
case ('twinburgers') case ('twinburgers')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_burgersPerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_burgersPerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_burgersPerTwinFamily(1:4,i)
case ('f0') case ('f0')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_f0_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_f0_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_f0_PerSlipFamily(1:4,i)
case ('twinf0') case ('twinf0')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twinf0_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twinf0_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twinf0_PerTwinFamily(1:4,i)
case ('tau0e') case ('tau0e')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_tau0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_tau0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_tau0e_PerSlipFamily(1:4,i)
case ('twintau0') case ('twintau0')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twintau0_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twintau0_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twintau0_PerTwinFamily(1:4,i)
case ('tau0s') case ('tau0s')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_tau0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_tau0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_tau0s_PerSlipFamily(1:4,i)
case ('capre') case ('capre')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_capre_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_capre_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_capre_PerSlipFamily(1:4,i)
case ('caprs') case ('caprs')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_caprs_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_caprs_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_caprs_PerSlipFamily(1:4,i)
case ('v0e') case ('v0e')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_v0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_v0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_v0e_PerSlipFamily(1:4,i)
case ('twingamma0') case ('twingamma0')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twingamma0_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twingamma0_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twingamma0_PerTwinFamily(1:4,i)
case ('v0s') case ('v0s')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_v0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_v0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_v0s_PerSlipFamily(1:4,i)
case ('kinkcriticallength') case ('kinkcriticallength')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_kinkcriticallength_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_kinkcriticallength_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_kinkcriticallength_PerSlipFamily(1:4,i)
case ('twinsize') case ('twinsize')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twinsizePerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twinsizePerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('celambdaslip') case ('celambdaslip')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_CeLambdaSlipPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_CeLambdaSlipPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('twinlambdaslip') case ('twinlambdaslip')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twinlambdaslipPerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twinlambdaslipPerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twinlambdaslipPerTwinFamily(1:4,i)
case ('cslambdaslip') case ('cslambdaslip')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_CsLambdaSlipPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_CsLambdaSlipPerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('grainsize') case ('grainsize')
constitutive_titanmod_GrainSize(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_GrainSize(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag
case ('maxtwinfraction') case ('maxtwinfraction')
constitutive_titanmod_MaxTwinFraction(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_MaxTwinFraction(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag
case ('pe') case ('pe')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_pe_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_pe_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_pe_PerSlipFamily(1:4,i)
case ('twinp') case ('twinp')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twinp_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twinp_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twinp_PerTwinFamily(1:4,i)
case ('ps') case ('ps')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_ps_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_ps_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_ps_PerSlipFamily(1:4,i)
case ('qe') case ('qe')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_qe_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_qe_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_qe_PerSlipFamily(1:4,i)
case ('twinq') case ('twinq')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twinq_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twinq_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twinq_PerTwinFamily(1:4,i)
case ('qs') case ('qs')
do j = 1_pInt, lattice_maxNslipFamily do j = 1_pInt, Nchunks_SlipFamilies
constitutive_titanmod_qs_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_qs_PerSlipFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_qs_PerSlipFamily(1:4,i)
case ('twinshearconstant') case ('twinshearconstant')
do j = 1_pInt, lattice_maxNtwinFamily do j = 1_pInt, Nchunks_TwinFamilies
constitutive_titanmod_twinshearconstant_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_twinshearconstant_PerTwinFamily(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag,constitutive_titanmod_twinshearconstant_PerTwinFamily(1:4,i)
case ('dc') case ('dc')
constitutive_titanmod_dc(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_dc(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag
case ('twinhpconstant') case ('twinhpconstant')
constitutive_titanmod_twinhpconstant(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_twinhpconstant(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag
case ('atol_rho') case ('atol_rho')
constitutive_titanmod_aTolRho(i) = IO_floatValue(line,positions,2_pInt) constitutive_titanmod_aTolRho(i) = IO_floatValue(line,positions,2_pInt)
write(6,*) tag
case ('interactionslipslip') case ('interactionslipslip')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_SlipSlip
constitutive_titanmod_interactionSlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interactionSlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('interactionee') case ('interactionee')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, lattice_maxNinteraction
constitutive_titanmod_interaction_ee(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interaction_ee(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('interactionss') case ('interactionss')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, lattice_maxNinteraction
constitutive_titanmod_interaction_ss(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interaction_ss(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('interactiones') case ('interactiones')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, lattice_maxNinteraction
constitutive_titanmod_interaction_es(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interaction_es(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('interactionsliptwin') case ('interactionsliptwin')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_SlipTwin
constitutive_titanmod_interactionSlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interactionSlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('interactiontwinslip') case ('interactiontwinslip')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_TwinSlip
constitutive_titanmod_interactionTwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interactionTwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case ('interactiontwintwin') case ('interactiontwintwin')
do j = 1_pInt, lattice_maxNinteraction do j = 1_pInt, Nchunks_TwinTwin
constitutive_titanmod_interactionTwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j) constitutive_titanmod_interactionTwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
enddo enddo
write(6,*) tag
case default case default
call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_titanmod_label//')') call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_titanmod_label//')')
end select end select
endif endif
enddo enddo
write(6,*) 'Material Property reading done'
100 do i = 1_pInt,maxNinstance 100 do i = 1_pInt,maxNinstance
constitutive_titanmod_structure(i) = & constitutive_titanmod_structure(i) = &
lattice_initializeStructure(constitutive_titanmod_structureName(i),constitutive_titanmod_CoverA(i)) lattice_initializeStructure(constitutive_titanmod_structureName(i),constitutive_titanmod_CoverA(i))
@ -726,14 +693,12 @@ write(6,*) 'Material Property reading done'
constitutive_titanmod_Ntwin(:,i) = min(lattice_NtwinSystem(:,myStructure),constitutive_titanmod_Ntwin(:,i)) constitutive_titanmod_Ntwin(:,i) = min(lattice_NtwinSystem(:,myStructure),constitutive_titanmod_Ntwin(:,i))
constitutive_titanmod_totalNslip(i) = sum(constitutive_titanmod_Nslip(:,i)) constitutive_titanmod_totalNslip(i) = sum(constitutive_titanmod_Nslip(:,i))
constitutive_titanmod_totalNtwin(i) = sum(constitutive_titanmod_Ntwin(:,i)) constitutive_titanmod_totalNtwin(i) = sum(constitutive_titanmod_Ntwin(:,i))
write(6,*) 'Sanity Checks done !'
enddo enddo
!* Allocation of variables whose size depends on the total number of active slip systems !* Allocation of variables whose size depends on the total number of active slip systems
maxTotalNslip = maxval(constitutive_titanmod_totalNslip) maxTotalNslip = maxval(constitutive_titanmod_totalNslip)
maxTotalNtwin = maxval(constitutive_titanmod_totalNtwin) maxTotalNtwin = maxval(constitutive_titanmod_totalNtwin)
write(6,*) 'maxTotalNslip',maxTotalNslip
write(6,*) 'maxTotalNtwin',maxTotalNtwin
allocate(constitutive_titanmod_burgersPerSlipSystem(maxTotalNslip, maxNinstance)) allocate(constitutive_titanmod_burgersPerSlipSystem(maxTotalNslip, maxNinstance))
allocate(constitutive_titanmod_burgersPerTwinSystem(maxTotalNtwin, maxNinstance)) allocate(constitutive_titanmod_burgersPerTwinSystem(maxTotalNtwin, maxNinstance))
@ -762,31 +727,31 @@ allocate(constitutive_titanmod_twingamma0_PerTwinSystem(maxTotalNTwin,maxNinstan
allocate(constitutive_titanmod_twinsizePerTwinSystem(maxTotalNtwin, maxNinstance)) allocate(constitutive_titanmod_twinsizePerTwinSystem(maxTotalNtwin, maxNinstance))
allocate(constitutive_titanmod_twinLambdaSlipPerTwinSystem(maxTotalNtwin, maxNinstance)) allocate(constitutive_titanmod_twinLambdaSlipPerTwinSystem(maxTotalNtwin, maxNinstance))
constitutive_titanmod_burgersPerSlipSystem = 0.0_pReal constitutive_titanmod_burgersPerSlipSystem = 0.0_pReal
constitutive_titanmod_burgersPerTwinSystem = 0.0_pReal constitutive_titanmod_burgersPerTwinSystem = 0.0_pReal
constitutive_titanmod_f0_PerSlipSystem = 0.0_pReal constitutive_titanmod_f0_PerSlipSystem = 0.0_pReal
constitutive_titanmod_tau0e_PerSlipSystem = 0.0_pReal constitutive_titanmod_tau0e_PerSlipSystem = 0.0_pReal
constitutive_titanmod_tau0s_PerSlipSystem = 0.0_pReal constitutive_titanmod_tau0s_PerSlipSystem = 0.0_pReal
constitutive_titanmod_capre_PerSlipSystem = 0.0_pReal constitutive_titanmod_capre_PerSlipSystem = 0.0_pReal
constitutive_titanmod_caprs_PerSlipSystem = 0.0_pReal constitutive_titanmod_caprs_PerSlipSystem = 0.0_pReal
constitutive_titanmod_v0e_PerSlipSystem = 0.0_pReal constitutive_titanmod_v0e_PerSlipSystem = 0.0_pReal
constitutive_titanmod_v0s_PerSlipSystem = 0.0_pReal constitutive_titanmod_v0s_PerSlipSystem = 0.0_pReal
constitutive_titanmod_kinkcriticallength_PerSlipSystem = 0.0_pReal constitutive_titanmod_kinkcriticallength_PerSlipSystem = 0.0_pReal
constitutive_titanmod_pe_PerSlipSystem = 0.0_pReal constitutive_titanmod_pe_PerSlipSystem = 0.0_pReal
constitutive_titanmod_ps_PerSlipSystem = 0.0_pReal constitutive_titanmod_ps_PerSlipSystem = 0.0_pReal
constitutive_titanmod_qe_PerSlipSystem = 0.0_pReal constitutive_titanmod_qe_PerSlipSystem = 0.0_pReal
constitutive_titanmod_qs_PerSlipSystem = 0.0_pReal constitutive_titanmod_qs_PerSlipSystem = 0.0_pReal
constitutive_titanmod_twinf0_PerTwinSystem = 0.0_pReal constitutive_titanmod_twinf0_PerTwinSystem = 0.0_pReal
constitutive_titanmod_twinshearconstant_PerTwinSystem = 0.0_pReal constitutive_titanmod_twinshearconstant_PerTwinSystem = 0.0_pReal
constitutive_titanmod_twintau0_PerTwinSystem = 0.0_pReal constitutive_titanmod_twintau0_PerTwinSystem = 0.0_pReal
constitutive_titanmod_twingamma0_PerTwinSystem = 0.0_pReal constitutive_titanmod_twingamma0_PerTwinSystem = 0.0_pReal
constitutive_titanmod_twinp_PerTwinSystem = 0.0_pReal constitutive_titanmod_twinp_PerTwinSystem = 0.0_pReal
constitutive_titanmod_twinq_PerTwinSystem = 0.0_pReal constitutive_titanmod_twinq_PerTwinSystem = 0.0_pReal
constitutive_titanmod_twinsizePerTwinSystem = 0.0_pReal constitutive_titanmod_twinsizePerTwinSystem = 0.0_pReal
constitutive_titanmod_CeLambdaSlipPerSlipSystem = 0.0_pReal constitutive_titanmod_CeLambdaSlipPerSlipSystem = 0.0_pReal
constitutive_titanmod_CsLambdaSlipPerSlipSystem = 0.0_pReal constitutive_titanmod_CsLambdaSlipPerSlipSystem = 0.0_pReal
constitutive_titanmod_twinLambdaSlipPerTwinSystem = 0.0_pReal constitutive_titanmod_twinLambdaSlipPerTwinSystem = 0.0_pReal
allocate(constitutive_titanmod_interactionMatrixSlipSlip(maxTotalNslip,maxTotalNslip,maxNinstance)) allocate(constitutive_titanmod_interactionMatrixSlipSlip(maxTotalNslip,maxTotalNslip,maxNinstance))
@ -808,16 +773,15 @@ constitutive_titanmod_interactionMatrixSlipTwin = 0.0_pReal
constitutive_titanmod_interactionMatrixTwinSlip = 0.0_pReal constitutive_titanmod_interactionMatrixTwinSlip = 0.0_pReal
constitutive_titanmod_interactionMatrixTwinTwin = 0.0_pReal constitutive_titanmod_interactionMatrixTwinTwin = 0.0_pReal
constitutive_titanmod_forestProjectionEdge = 0.0_pReal constitutive_titanmod_forestProjectionEdge = 0.0_pReal
constitutive_titanmod_forestProjectionScrew = 0.0_pReal constitutive_titanmod_forestProjectionScrew = 0.0_pReal
constitutive_titanmod_TwinforestProjectionEdge = 0.0_pReal constitutive_titanmod_TwinforestProjectionEdge = 0.0_pReal
constitutive_titanmod_TwinforestProjectionScrew = 0.0_pReal constitutive_titanmod_TwinforestProjectionScrew = 0.0_pReal
allocate(constitutive_titanmod_Ctwin_66(6,6,maxTotalNtwin,maxNinstance)) allocate(constitutive_titanmod_Ctwin_66(6,6,maxTotalNtwin,maxNinstance))
allocate(constitutive_titanmod_Ctwin_3333(3,3,3,3,maxTotalNtwin,maxNinstance)) allocate(constitutive_titanmod_Ctwin_3333(3,3,3,3,maxTotalNtwin,maxNinstance))
constitutive_titanmod_Ctwin_66 = 0.0_pReal constitutive_titanmod_Ctwin_66 = 0.0_pReal
constitutive_titanmod_Ctwin_3333 = 0.0_pReal constitutive_titanmod_Ctwin_3333 = 0.0_pReal
write(6,*) 'Allocated slip system variables'
do i = 1_pInt,maxNinstance do i = 1_pInt,maxNinstance
myStructure = constitutive_titanmod_structure(i) myStructure = constitutive_titanmod_structure(i)
@ -847,10 +811,11 @@ do i = 1_pInt,maxNinstance
constitutive_titanmod_sizeState(i) = & constitutive_titanmod_sizeState(i) = &
constitutive_titanmod_sizeDotState(i)+ & constitutive_titanmod_sizeDotState(i)+ &
size(constitutive_titanmod_listDependentSlipStates)*ns+size(constitutive_titanmod_listDependentTwinStates)*nt size(constitutive_titanmod_listDependentSlipStates)*ns+size(constitutive_titanmod_listDependentTwinStates)*nt
write(6,*) 'Determined size of state and dot state'
!* Determine size of postResults array !* Determine size of postResults array
do o = 1_pInt,constitutive_titanmod_Noutput(i) do o = 1_pInt,constitutive_titanmod_Noutput(i)
mySize = 0_pInt
select case(constitutive_titanmod_output(o,i)) select case(constitutive_titanmod_output(o,i))
case('rhoedge', & case('rhoedge', &
'rhoscrew', & 'rhoscrew', &
@ -868,16 +833,16 @@ do i = 1_pInt,maxNinstance
'stressratio_screw_p', & 'stressratio_screw_p', &
'shear_system' & 'shear_system' &
) )
mySize = constitutive_titanmod_totalNslip(i) mySize = constitutive_titanmod_totalNslip(i)
case('twin_fraction', & case('twin_fraction', &
'gdot_twin', & 'gdot_twin', &
'tau_twin' & 'tau_twin' &
) )
mySize = constitutive_titanmod_totalNtwin(i) mySize = constitutive_titanmod_totalNtwin(i)
case('shear_basal', & ! use only if all 4 slip familiies in hex are considered case('shear_basal', & ! use only if all 4 slip families in hex are considered
'shear_prism', & ! use only if all 4 slip familiies in hex are considered 'shear_prism', & ! use only if all 4 slip families in hex are considered
'shear_pyra', & ! use only if all 4 slip familiies in hex are considered 'shear_pyra', & ! use only if all 4 slip families in hex are considered
'shear_pyrca', & ! use only if all 4 slip familiies in hex are considered 'shear_pyrca', & ! use only if all 4 slip families in hex are considered
'rhoedge_basal', & 'rhoedge_basal', &
'rhoedge_prism', & 'rhoedge_prism', &
'rhoedge_pyra', & 'rhoedge_pyra', &
@ -888,9 +853,9 @@ do i = 1_pInt,maxNinstance
'rhoscrew_pyrca', & 'rhoscrew_pyrca', &
'shear_total' & 'shear_total' &
) )
mySize = 1_pInt mySize = 1_pInt
case default case default
call IO_error(212_pInt,ext_msg=constitutive_titanmod_output(o,i)//' ('//constitutive_titanmod_label//')') call IO_error(212_pInt,ext_msg=constitutive_titanmod_output(o,i)//' ('//constitutive_titanmod_label//')')
end select end select
if (mySize > 0_pInt) then ! any meaningful output found if (mySize > 0_pInt) then ! any meaningful output found
@ -899,11 +864,9 @@ do i = 1_pInt,maxNinstance
endif endif
enddo enddo
write(6,*) 'Determining elasticity matrix'
!* Elasticity matrix and shear modulus according to material.config !* Elasticity matrix and shear modulus according to material.config
constitutive_titanmod_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_titanmod_structureName(i),& constitutive_titanmod_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_titanmod_structureName(i),&
constitutive_titanmod_Cslip_66(:,:,i)) constitutive_titanmod_Cslip_66(:,:,i))
constitutive_titanmod_Gmod(i) = & constitutive_titanmod_Gmod(i) = &
0.2_pReal*(constitutive_titanmod_Cslip_66(1,1,i)-constitutive_titanmod_Cslip_66(1,2,i))& 0.2_pReal*(constitutive_titanmod_Cslip_66(1,1,i)-constitutive_titanmod_Cslip_66(1,2,i))&
+ 0.3_pReal*constitutive_titanmod_Cslip_66(4,4,i) + 0.3_pReal*constitutive_titanmod_Cslip_66(4,4,i)
@ -933,14 +896,14 @@ do i = 1_pInt,maxNinstance
!* Burgers vector, dislocation velocity prefactor for each slip system !* Burgers vector, dislocation velocity prefactor for each slip system
do s = 1_pInt,constitutive_titanmod_totalNslip(i) do s = 1_pInt,constitutive_titanmod_totalNslip(i)
f = constitutive_titanmod_slipFamily(s,i) f = constitutive_titanmod_slipFamily(s,i)
constitutive_titanmod_burgersPerSlipSystem(s,i) = constitutive_titanmod_burgersPerSlipFamily(f,i) constitutive_titanmod_burgersPerSlipSystem(s,i) = constitutive_titanmod_burgersPerSlipFamily(f,i)
constitutive_titanmod_f0_PerSlipSystem(s,i) = constitutive_titanmod_f0_PerSlipFamily(f,i) constitutive_titanmod_f0_PerSlipSystem(s,i) = constitutive_titanmod_f0_PerSlipFamily(f,i)
constitutive_titanmod_tau0e_PerSlipSystem(s,i) = constitutive_titanmod_tau0e_PerSlipFamily(f,i) constitutive_titanmod_tau0e_PerSlipSystem(s,i) = constitutive_titanmod_tau0e_PerSlipFamily(f,i)
constitutive_titanmod_tau0s_PerSlipSystem(s,i) = constitutive_titanmod_tau0s_PerSlipFamily(f,i) constitutive_titanmod_tau0s_PerSlipSystem(s,i) = constitutive_titanmod_tau0s_PerSlipFamily(f,i)
constitutive_titanmod_capre_PerSlipSystem(s,i) = constitutive_titanmod_capre_PerSlipFamily(f,i) constitutive_titanmod_capre_PerSlipSystem(s,i) = constitutive_titanmod_capre_PerSlipFamily(f,i)
constitutive_titanmod_caprs_PerSlipSystem(s,i) = constitutive_titanmod_caprs_PerSlipFamily(f,i) constitutive_titanmod_caprs_PerSlipSystem(s,i) = constitutive_titanmod_caprs_PerSlipFamily(f,i)
constitutive_titanmod_v0e_PerSlipSystem(s,i) = constitutive_titanmod_v0e_PerSlipFamily(f,i) constitutive_titanmod_v0e_PerSlipSystem(s,i) = constitutive_titanmod_v0e_PerSlipFamily(f,i)
constitutive_titanmod_v0s_PerSlipSystem(s,i) = constitutive_titanmod_v0s_PerSlipFamily(f,i) constitutive_titanmod_v0s_PerSlipSystem(s,i) = constitutive_titanmod_v0s_PerSlipFamily(f,i)
constitutive_titanmod_kinkcriticallength_PerSlipSystem(s,i) = constitutive_titanmod_kinkcriticallength_PerSlipFamily(f,i) constitutive_titanmod_kinkcriticallength_PerSlipSystem(s,i) = constitutive_titanmod_kinkcriticallength_PerSlipFamily(f,i)
constitutive_titanmod_pe_PerSlipSystem(s,i) = constitutive_titanmod_pe_PerSlipFamily(f,i) constitutive_titanmod_pe_PerSlipSystem(s,i) = constitutive_titanmod_pe_PerSlipFamily(f,i)
constitutive_titanmod_ps_PerSlipSystem(s,i) = constitutive_titanmod_ps_PerSlipFamily(f,i) constitutive_titanmod_ps_PerSlipSystem(s,i) = constitutive_titanmod_ps_PerSlipFamily(f,i)
@ -953,14 +916,14 @@ do i = 1_pInt,maxNinstance
!* Burgers vector, nucleation rate prefactor and twin size for each twin system !* Burgers vector, nucleation rate prefactor and twin size for each twin system
do t = 1_pInt,constitutive_titanmod_totalNtwin(i) do t = 1_pInt,constitutive_titanmod_totalNtwin(i)
f = constitutive_titanmod_twinFamily(t,i) f = constitutive_titanmod_twinFamily(t,i)
constitutive_titanmod_burgersPerTwinSystem(t,i) = constitutive_titanmod_burgersPerTwinFamily(f,i) constitutive_titanmod_burgersPerTwinSystem(t,i) = constitutive_titanmod_burgersPerTwinFamily(f,i)
constitutive_titanmod_twinsizePerTwinSystem(t,i) = constitutive_titanmod_twinsizePerTwinFamily(f,i) constitutive_titanmod_twinsizePerTwinSystem(t,i) = constitutive_titanmod_twinsizePerTwinFamily(f,i)
constitutive_titanmod_twinf0_PerTwinSystem(t,i) = constitutive_titanmod_twinf0_PerTwinFamily(f,i) constitutive_titanmod_twinf0_PerTwinSystem(t,i) = constitutive_titanmod_twinf0_PerTwinFamily(f,i)
constitutive_titanmod_twinshearconstant_PerTwinSystem(t,i) = constitutive_titanmod_twinshearconstant_PerTwinFamily(f,i) constitutive_titanmod_twinshearconstant_PerTwinSystem(t,i) = constitutive_titanmod_twinshearconstant_PerTwinFamily(f,i)
constitutive_titanmod_twintau0_PerTwinSystem(t,i) = constitutive_titanmod_twintau0_PerTwinFamily(f,i) constitutive_titanmod_twintau0_PerTwinSystem(t,i) = constitutive_titanmod_twintau0_PerTwinFamily(f,i)
constitutive_titanmod_twingamma0_PerTwinSystem(t,i) = constitutive_titanmod_twingamma0_PerTwinFamily(f,i) constitutive_titanmod_twingamma0_PerTwinSystem(t,i) = constitutive_titanmod_twingamma0_PerTwinFamily(f,i)
constitutive_titanmod_twinp_PerTwinSystem(t,i) = constitutive_titanmod_twinp_PerTwinFamily(f,i) constitutive_titanmod_twinp_PerTwinSystem(t,i) = constitutive_titanmod_twinp_PerTwinFamily(f,i)
constitutive_titanmod_twinq_PerTwinSystem(t,i) = constitutive_titanmod_twinq_PerTwinFamily(f,i) constitutive_titanmod_twinq_PerTwinSystem(t,i) = constitutive_titanmod_twinq_PerTwinFamily(f,i)
constitutive_titanmod_twinLambdaSlipPerTwinSystem(t,i) = constitutive_titanmod_twinLambdaSlipPerTwinFamily(f,i) constitutive_titanmod_twinLambdaSlipPerTwinSystem(t,i) = constitutive_titanmod_twinLambdaSlipPerTwinFamily(f,i)
enddo enddo
@ -970,44 +933,44 @@ do i = 1_pInt,maxNinstance
do s2 = 1_pInt,constitutive_titanmod_totalNslip(i) do s2 = 1_pInt,constitutive_titanmod_totalNslip(i)
constitutive_titanmod_interactionMatrixSlipSlip(s1,s2,i) = & constitutive_titanmod_interactionMatrixSlipSlip(s1,s2,i) = &
constitutive_titanmod_interactionSlipSlip(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), & constitutive_titanmod_interactionSlipSlip(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), &
constitutive_titanmod_slipSystemLattice(s2,i), & constitutive_titanmod_slipSystemLattice(s2,i), &
myStructure),i) myStructure),i)
constitutive_titanmod_interactionMatrix_ee(s1,s2,i) = & constitutive_titanmod_interactionMatrix_ee(s1,s2,i) = &
constitutive_titanmod_interaction_ee(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), & constitutive_titanmod_interaction_ee(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), &
constitutive_titanmod_slipSystemLattice(s2,i), & constitutive_titanmod_slipSystemLattice(s2,i), &
myStructure),i) myStructure),i)
constitutive_titanmod_interactionMatrix_ss(s1,s2,i) = & constitutive_titanmod_interactionMatrix_ss(s1,s2,i) = &
constitutive_titanmod_interaction_ss(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), & constitutive_titanmod_interaction_ss(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), &
constitutive_titanmod_slipSystemLattice(s2,i), & constitutive_titanmod_slipSystemLattice(s2,i), &
myStructure),i) myStructure),i)
constitutive_titanmod_interactionMatrix_es(s1,s2,i) = & constitutive_titanmod_interactionMatrix_es(s1,s2,i) = &
constitutive_titanmod_interaction_es(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), & constitutive_titanmod_interaction_es(lattice_interactionSlipSlip(constitutive_titanmod_slipSystemLattice(s1,i), &
constitutive_titanmod_slipSystemLattice(s2,i), & constitutive_titanmod_slipSystemLattice(s2,i), &
myStructure),i) myStructure),i)
enddo; enddo enddo; enddo
do s1 = 1_pInt,constitutive_titanmod_totalNslip(i) do s1 = 1_pInt,constitutive_titanmod_totalNslip(i)
do t2 = 1_pInt,constitutive_titanmod_totalNtwin(i) do t2 = 1_pInt,constitutive_titanmod_totalNtwin(i)
constitutive_titanmod_interactionMatrixSlipTwin(s1,t2,i) = & constitutive_titanmod_interactionMatrixSlipTwin(s1,t2,i) = &
constitutive_titanmod_interactionSlipTwin(lattice_interactionSlipTwin(constitutive_titanmod_slipSystemLattice(s1,i), & constitutive_titanmod_interactionSlipTwin(lattice_interactionSlipTwin(constitutive_titanmod_slipSystemLattice(s1,i), &
constitutive_titanmod_twinSystemLattice(t2,i), & constitutive_titanmod_twinSystemLattice(t2,i), &
myStructure),i) myStructure),i)
enddo; enddo enddo; enddo
do t1 = 1_pInt,constitutive_titanmod_totalNtwin(i) do t1 = 1_pInt,constitutive_titanmod_totalNtwin(i)
do s2 = 1_pInt,constitutive_titanmod_totalNslip(i) do s2 = 1_pInt,constitutive_titanmod_totalNslip(i)
constitutive_titanmod_interactionMatrixTwinSlip(t1,s2,i) = & constitutive_titanmod_interactionMatrixTwinSlip(t1,s2,i) = &
constitutive_titanmod_interactionTwinSlip(lattice_interactionTwinSlip(constitutive_titanmod_twinSystemLattice(t1,i), & constitutive_titanmod_interactionTwinSlip(lattice_interactionTwinSlip(constitutive_titanmod_twinSystemLattice(t1,i), &
constitutive_titanmod_slipSystemLattice(s2,i), & constitutive_titanmod_slipSystemLattice(s2,i), &
myStructure),i) myStructure),i)
enddo; enddo enddo; enddo
do t1 = 1_pInt,constitutive_titanmod_totalNtwin(i) do t1 = 1_pInt,constitutive_titanmod_totalNtwin(i)
do t2 = 1_pInt,constitutive_titanmod_totalNtwin(i) do t2 = 1_pInt,constitutive_titanmod_totalNtwin(i)
constitutive_titanmod_interactionMatrixTwinTwin(t1,t2,i) = & constitutive_titanmod_interactionMatrixTwinTwin(t1,t2,i) = &
constitutive_titanmod_interactionTwinTwin(lattice_interactionTwinTwin(constitutive_titanmod_twinSystemLattice(t1,i), & constitutive_titanmod_interactionTwinTwin(lattice_interactionTwinTwin(constitutive_titanmod_twinSystemLattice(t1,i), &
constitutive_titanmod_twinSystemLattice(t2,i), & constitutive_titanmod_twinSystemLattice(t2,i), &
myStructure),i) myStructure),i)
enddo; enddo enddo; enddo
!* Calculation of forest projections for edge dislocations !* Calculation of forest projections for edge dislocations
@ -1036,7 +999,6 @@ do i = 1_pInt,maxNinstance
enddo; enddo enddo; enddo
enddo enddo
write(6,*) 'Init All done'
end subroutine end subroutine

View File

@ -707,7 +707,8 @@ module lattice
lattice_init, & lattice_init, &
lattice_initializeStructure, & lattice_initializeStructure, &
lattice_symmetryType, & lattice_symmetryType, &
lattice_symmetrizeC66 lattice_symmetrizeC66, &
lattice_configNchunks
contains contains
@ -1054,4 +1055,46 @@ integer(pInt) function lattice_initializeStructure(struct,CoverA)
end function lattice_initializeStructure end function lattice_initializeStructure
!--------------------------------------------------------------------------------------------------
!> @brief Number of parameters to expect in material.config section
! NslipFamilies
! NtwinFamilies
! SlipSlipInteraction
! SlipTwinInteraction
! TwinSlipInteraction
! TwinTwinInteraction
!--------------------------------------------------------------------------------------------------
function lattice_configNchunks(struct)
use prec, only: pReal,pInt
implicit none
integer(pInt), dimension(6) :: lattice_configNchunks
character(len=*), intent(in) :: struct
select case(struct(1:3)) ! check first three chars of structure name
case ('fcc')
lattice_configNchunks(1) = count(lattice_fcc_NslipSystem > 0_pInt)
lattice_configNchunks(2) = count(lattice_fcc_NtwinSystem > 0_pInt)
lattice_configNchunks(3) = maxval(lattice_fcc_interactionSlipSlip)
lattice_configNchunks(4) = maxval(lattice_fcc_interactionSlipTwin)
lattice_configNchunks(5) = maxval(lattice_fcc_interactionTwinSlip)
lattice_configNchunks(6) = maxval(lattice_fcc_interactionTwinTwin)
case ('bcc')
lattice_configNchunks(1) = count(lattice_bcc_NslipSystem > 0_pInt)
lattice_configNchunks(2) = count(lattice_bcc_NtwinSystem > 0_pInt)
lattice_configNchunks(3) = maxval(lattice_bcc_interactionSlipSlip)
lattice_configNchunks(4) = maxval(lattice_bcc_interactionSlipTwin)
lattice_configNchunks(5) = maxval(lattice_bcc_interactionTwinSlip)
lattice_configNchunks(6) = maxval(lattice_bcc_interactionTwinTwin)
case ('hex')
lattice_configNchunks(1) = count(lattice_hex_NslipSystem > 0_pInt)
lattice_configNchunks(2) = count(lattice_hex_NtwinSystem > 0_pInt)
lattice_configNchunks(3) = maxval(lattice_hex_interactionSlipSlip)
lattice_configNchunks(4) = maxval(lattice_hex_interactionSlipTwin)
lattice_configNchunks(5) = maxval(lattice_hex_interactionTwinSlip)
lattice_configNchunks(6) = maxval(lattice_hex_interactionTwinTwin)
end select
end function lattice_configNchunks
end module lattice end module lattice