switched to smoother traction separation law for better convergence. anisotropic brittle now working.

lowered default max iterations for FEM
This commit is contained in:
Pratheek Shanthraj 2014-11-01 17:51:35 +00:00
parent ffa622b441
commit 261bffa745
2 changed files with 7 additions and 7 deletions

View File

@ -366,12 +366,12 @@ subroutine damage_anisoBrittle_dotState(Tstar_v,ipc, ip, el)
do f = 1_pInt,lattice_maxNcleavageFamily do f = 1_pInt,lattice_maxNcleavageFamily
index_myFamily = sum(lattice_NcleavageSystem(1:f-1_pInt,phase)) ! at which index starts my family index_myFamily = sum(lattice_NcleavageSystem(1:f-1_pInt,phase)) ! at which index starts my family
do i = 1_pInt,damage_anisoBrittle_Ncleavage(f,instance) ! process each (active) cleavage system in family do i = 1_pInt,damage_anisoBrittle_Ncleavage(f,instance) ! process each (active) cleavage system in family
opening = math_norm3(damageState(phase)%state0(index+1:index+3,constituent)) opening = math_norm3(damageState(phase)%state(index+1:index+3,constituent))
traction_d = dot_product(Tstar_v,lattice_Scleavage_v(1:6,1,index_myFamily+i,phase)) traction_d = dot_product(Tstar_v,lattice_Scleavage_v(1:6,1,index_myFamily+i,phase))
traction_t = dot_product(Tstar_v,lattice_Scleavage_v(1:6,2,index_myFamily+i,phase)) traction_t = dot_product(Tstar_v,lattice_Scleavage_v(1:6,2,index_myFamily+i,phase))
traction_n = dot_product(Tstar_v,lattice_Scleavage_v(1:6,3,index_myFamily+i,phase)) traction_n = dot_product(Tstar_v,lattice_Scleavage_v(1:6,3,index_myFamily+i,phase))
traction_crit = max(0.001_pReal,(1.0_pReal - opening/damage_anisoBrittle_critDisp(f,instance)))* & traction_crit = nonLocalFactor*damage_anisoBrittle_critLoad(f,instance)* &
damage_anisoBrittle_critLoad(f,instance)*nonLocalFactor 1.0_pReal/(1.0_pReal + opening/damage_anisoBrittle_critDisp(f,instance))
damageState(phase)%dotState(index+1,constituent) = & damageState(phase)%dotState(index+1,constituent) = &
sign(1.0_pReal,traction_d)* & sign(1.0_pReal,traction_d)* &
damage_anisoBrittle_sdot_0(instance)* & damage_anisoBrittle_sdot_0(instance)* &
@ -464,12 +464,12 @@ subroutine damage_anisoBrittle_LdAndItsTangent(Ld, dLd_dTstar, Tstar_v, ipc, ip,
do f = 1_pInt,lattice_maxNcleavageFamily do f = 1_pInt,lattice_maxNcleavageFamily
index_myFamily = sum(lattice_NcleavageSystem(1:f-1_pInt,phase)) ! at which index starts my family index_myFamily = sum(lattice_NcleavageSystem(1:f-1_pInt,phase)) ! at which index starts my family
do i = 1_pInt,damage_anisoBrittle_Ncleavage(f,instance) ! process each (active) cleavage system in family do i = 1_pInt,damage_anisoBrittle_Ncleavage(f,instance) ! process each (active) cleavage system in family
opening = math_norm3(damageState(phase)%state0(index+1:index+3,constituent)) opening = math_norm3(damageState(phase)%state(index+1:index+3,constituent))
traction_d = dot_product(Tstar_v,lattice_Scleavage_v(1:6,1,index_myFamily+i,phase)) traction_d = dot_product(Tstar_v,lattice_Scleavage_v(1:6,1,index_myFamily+i,phase))
traction_t = dot_product(Tstar_v,lattice_Scleavage_v(1:6,2,index_myFamily+i,phase)) traction_t = dot_product(Tstar_v,lattice_Scleavage_v(1:6,2,index_myFamily+i,phase))
traction_n = dot_product(Tstar_v,lattice_Scleavage_v(1:6,3,index_myFamily+i,phase)) traction_n = dot_product(Tstar_v,lattice_Scleavage_v(1:6,3,index_myFamily+i,phase))
traction_crit = max(0.001_pReal,(1.0_pReal - opening/damage_anisoBrittle_critDisp(f,instance)))* & traction_crit = nonLocalFactor*damage_anisoBrittle_critLoad(f,instance)* &
damage_anisoBrittle_critLoad(f,instance)*nonLocalFactor 1.0_pReal/(1.0_pReal + opening/damage_anisoBrittle_critDisp(f,instance))
udotd = & udotd = &
sign(1.0_pReal,traction_d)* & sign(1.0_pReal,traction_d)* &
damage_anisoBrittle_sdot_0(instance)* & damage_anisoBrittle_sdot_0(instance)* &

View File

@ -150,7 +150,7 @@ module numerics
&-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 & &-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-thermal_mg_levels_pc_type sor' &-thermal_mg_levels_pc_type sor'
integer(pInt), protected, public :: & integer(pInt), protected, public :: &
itmaxFEM = 250_pInt, & !< maximum number of iterations itmaxFEM = 25_pInt, & !< maximum number of iterations
itminFEM = 2_pInt, & !< minimum number of iterations itminFEM = 2_pInt, & !< minimum number of iterations
maxCutBackFEM = 3_pInt, & !< max number of cut backs maxCutBackFEM = 3_pInt, & !< max number of cut backs
integrationOrder = 1_pInt, & integrationOrder = 1_pInt, &