Merge branch 'general-N_constituents' into 'development'

Mandatory N_constituents

See merge request damask/DAMASK!250
This commit is contained in:
Philip Eisenlohr 2020-10-14 06:46:15 +02:00
commit 4a16aa2237
13 changed files with 47 additions and 56 deletions

@ -1 +1 @@
Subproject commit 226ea55968c756ae1abbdf51230756bb80696cb0 Subproject commit c92f6d3e23a4c310898b502f00e395dbe670a63c

View File

@ -1,21 +0,0 @@
# Tasan et.al. 2015 Acta Materalia
# Tasan et.al. 2015 International Journal of Plasticity
# Diehl et.al. 2015 Meccanica
[BCC-Ferrite]
elasticity hooke
plasticity phenopowerlaw
lattice_structure bcc
Nslip 12 12 # per family
Ntwin 0 # per family
c11 233.3e9
c12 135.5e9
c44 118.0e9
gdot0_slip 0.001
n_slip 20
tau0_slip 95.e6 97.e6 # per family, optimization long simplex 109
tausat_slip 222.e6 412.7e6 # per family, optimization long simplex 109
h0_slipslip 1000.0e6
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
a_slip 2.0

View File

@ -0,0 +1,16 @@
# Tasan et.al. 2015 Acta Materalia
# Tasan et.al. 2015 International Journal of Plasticity
# Diehl et.al. 2015 Meccanica
Ferrite:
elasticity: {C_11: 233.3e9, C_12: 135.5e9, C_44: 118.0e9, type: hooke}
lattice: bcc
plasticity:
N_sl: [12, 12]
a_sl: 2.0
dot_gamma_0_sl: 0.001
h_0_sl_sl: 1000.0e6
h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4]
n_sl: 20
type: phenopowerlaw
xi_0_sl: [95.e6, 96.e6]
xi_inf_sl: [222.e6, 412.7e6]

View File

@ -1,21 +0,0 @@
# Tasan et.al. 2015 Acta Materalia
# Tasan et.al. 2015 International Journal of Plasticity
# Diehl et.al. 2015 Meccanica
[BCC-Martensite]
elasticity hooke
plasticity phenopowerlaw
lattice_structure bcc
Nslip 12 12 # per family
Ntwin 0 # per family
c11 417.4e9
c12 242.4e9
c44 211.1e9
gdot0_slip 0.001
n_slip 20
tau0_slip 405.8e6 456.7e6 # per family
tausat_slip 872.9e6 971.2e6 # per family
h0_slipslip 563.0e9
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
a_slip 2.0

View File

@ -0,0 +1,16 @@
# Tasan et.al. 2015 Acta Materalia
# Tasan et.al. 2015 International Journal of Plasticity
# Diehl et.al. 2015 Meccanica
Martensite:
elasticity: {C_11: 417.4e9, C_12: 242.4e9, C_44: 211.1e9, type: hooke}
lattice: bcc
plasticity:
N_sl: [12, 12]
a_sl: 2.0
dot_gamma_0_sl: 0.001
h_0_sl_sl: 563.0e9
h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4]
n_sl: 20
type: phenopowerlaw
xi_0_sl: [405.8e6, 456.7e6]
xi_inf_sl: [872.9e6, 971.2e6]

View File

@ -1,5 +1,6 @@
homogenization: homogenization:
SX: SX:
N_constituents: 1
mech: {type: none} mech: {type: none}
phase: phase:

View File

@ -1,6 +1,7 @@
--- ---
homogenization: homogenization:
SX: SX:
N_constituents: 1
mech: {type: none} mech: {type: none}
material: material:

View File

@ -371,8 +371,6 @@ subroutine IO_error(error_ID,el,ip,g,instance,ext_msg)
msg = 'write error for file:' msg = 'write error for file:'
case (102) case (102)
msg = 'could not read file:' msg = 'could not read file:'
case (103)
msg = 'could not assemble input files'
case (106) case (106)
msg = 'working directory does not exist:' msg = 'working directory does not exist:'
@ -411,7 +409,7 @@ subroutine IO_error(error_ID,el,ip,g,instance,ext_msg)
msg = 'not enough interaction parameters given' msg = 'not enough interaction parameters given'
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! errors related to the parsing of material.config ! errors related to the parsing of material.yaml
case (140) case (140)
msg = 'key not found' msg = 'key not found'
case (141) case (141)

View File

@ -165,7 +165,7 @@ module subroutine mech_RGC_init(num_homogMech)
prm%N_constituents = homogMech%get_asInts('cluster_size',requiredSize=3) prm%N_constituents = homogMech%get_asInts('cluster_size',requiredSize=3)
if (homogenization_Ngrains(h) /= product(prm%N_constituents)) & if (homogenization_Ngrains(h) /= product(prm%N_constituents)) &
call IO_error(211,ext_msg='clustersize (mech_rgc)') call IO_error(211,ext_msg='N_constituents (mech_RGC)')
prm%xi_alpha = homogMech%get_asFloat('xi_alpha') prm%xi_alpha = homogMech%get_asFloat('xi_alpha')
prm%c_alpha = homogMech%get_asFloat('c_alpha') prm%c_alpha = homogMech%get_asFloat('c_alpha')

View File

@ -51,7 +51,7 @@ module subroutine mech_isostrain_init
homogMech => homog%get('mech') homogMech => homog%get('mech')
associate(prm => param(homogenization_typeInstance(h))) associate(prm => param(homogenization_typeInstance(h)))
prm%N_constituents = homogMech%get_asInt('N_constituents') prm%N_constituents = homogenization_Ngrains(h)
select case(homogMech%get_asString('mapping',defaultVal = 'sum')) select case(homogMech%get_asString('mapping',defaultVal = 'sum'))
case ('sum') case ('sum')
prm%mapping = parallel_ID prm%mapping = parallel_ID

View File

@ -24,8 +24,11 @@ module subroutine mech_none_init
print'(a,i2)', ' # instances: ',Ninstance; flush(IO_STDOUT) print'(a,i2)', ' # instances: ',Ninstance; flush(IO_STDOUT)
do h = 1, size(homogenization_type) do h = 1, size(homogenization_type)
if (homogenization_type(h) /= HOMOGENIZATION_NONE_ID) cycle if(homogenization_type(h) /= HOMOGENIZATION_NONE_ID) cycle
if(homogenization_Ngrains(h) /= 1) &
call IO_error(211,ext_msg='N_constituents (mech_none)')
NofMyHomog = count(material_homogenizationAt == h) NofMyHomog = count(material_homogenizationAt == h)
homogState(h)%sizeState = 0 homogState(h)%sizeState = 0
allocate(homogState(h)%state0 (0,NofMyHomog)) allocate(homogState(h)%state0 (0,NofMyHomog))

View File

@ -256,16 +256,14 @@ subroutine material_parseHomogenization
do h=1, material_Nhomogenization do h=1, material_Nhomogenization
homog => material_homogenization%get(h) homog => material_homogenization%get(h)
homogMech => homog%get('mech') homogMech => homog%get('mech')
homogenization_Ngrains(h) = homog%get_asInt('N_constituents')
select case (homogMech%get_asString('type')) select case (homogMech%get_asString('type'))
case('none') case('none')
homogenization_type(h) = HOMOGENIZATION_NONE_ID homogenization_type(h) = HOMOGENIZATION_NONE_ID
homogenization_Ngrains(h) = 1
case('isostrain') case('isostrain')
homogenization_type(h) = HOMOGENIZATION_ISOSTRAIN_ID homogenization_type(h) = HOMOGENIZATION_ISOSTRAIN_ID
homogenization_Ngrains(h) = homogMech%get_asInt('N_constituents')
case('RGC') case('RGC')
homogenization_type(h) = HOMOGENIZATION_RGC_ID homogenization_type(h) = HOMOGENIZATION_RGC_ID
homogenization_Ngrains(h) = homogMech%get_asInt('N_constituents')
case default case default
call IO_error(500,ext_msg=homogMech%get_asString('type')) call IO_error(500,ext_msg=homogMech%get_asString('type'))
end select end select

View File

@ -737,13 +737,13 @@ pure function eu2om(eu) result(om)
s = sin(eu) s = sin(eu)
om(1,1) = c(1)*c(3)-s(1)*s(3)*c(2) om(1,1) = c(1)*c(3)-s(1)*s(3)*c(2)
om(1,2) = s(1)*c(3)+c(1)*s(3)*c(2)
om(1,3) = s(3)*s(2)
om(2,1) = -c(1)*s(3)-s(1)*c(3)*c(2) om(2,1) = -c(1)*s(3)-s(1)*c(3)*c(2)
om(2,2) = -s(1)*s(3)+c(1)*c(3)*c(2)
om(2,3) = c(3)*s(2)
om(3,1) = s(1)*s(2) om(3,1) = s(1)*s(2)
om(1,2) = s(1)*c(3)+c(1)*s(3)*c(2)
om(2,2) = -s(1)*s(3)+c(1)*c(3)*c(2)
om(3,2) = -c(1)*s(2) om(3,2) = -c(1)*s(2)
om(1,3) = s(3)*s(2)
om(2,3) = c(3)*s(2)
om(3,3) = c(2) om(3,3) = c(2)
where(abs(om)<1.0e-12_pReal) om = 0.0_pReal where(abs(om)<1.0e-12_pReal) om = 0.0_pReal