From 261bffa7457c31163147a3eb159fffe47df02689 Mon Sep 17 00:00:00 2001 From: Pratheek Shanthraj Date: Sat, 1 Nov 2014 17:51:35 +0000 Subject: [PATCH] switched to smoother traction separation law for better convergence. anisotropic brittle now working. lowered default max iterations for FEM --- code/damage_anisoBrittle.f90 | 12 ++++++------ code/numerics.f90 | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/damage_anisoBrittle.f90 b/code/damage_anisoBrittle.f90 index 2b5ab3b8d..f8494e95f 100644 --- a/code/damage_anisoBrittle.f90 +++ b/code/damage_anisoBrittle.f90 @@ -366,12 +366,12 @@ subroutine damage_anisoBrittle_dotState(Tstar_v,ipc, ip, el) do f = 1_pInt,lattice_maxNcleavageFamily 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 - 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_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_crit = max(0.001_pReal,(1.0_pReal - opening/damage_anisoBrittle_critDisp(f,instance)))* & - damage_anisoBrittle_critLoad(f,instance)*nonLocalFactor + traction_crit = nonLocalFactor*damage_anisoBrittle_critLoad(f,instance)* & + 1.0_pReal/(1.0_pReal + opening/damage_anisoBrittle_critDisp(f,instance)) damageState(phase)%dotState(index+1,constituent) = & sign(1.0_pReal,traction_d)* & 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 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 - 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_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_crit = max(0.001_pReal,(1.0_pReal - opening/damage_anisoBrittle_critDisp(f,instance)))* & - damage_anisoBrittle_critLoad(f,instance)*nonLocalFactor + traction_crit = nonLocalFactor*damage_anisoBrittle_critLoad(f,instance)* & + 1.0_pReal/(1.0_pReal + opening/damage_anisoBrittle_critDisp(f,instance)) udotd = & sign(1.0_pReal,traction_d)* & damage_anisoBrittle_sdot_0(instance)* & diff --git a/code/numerics.f90 b/code/numerics.f90 index 6015bf8b3..bd1da3945 100644 --- a/code/numerics.f90 +++ b/code/numerics.f90 @@ -150,7 +150,7 @@ module numerics &-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 & &-thermal_mg_levels_pc_type sor' 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 maxCutBackFEM = 3_pInt, & !< max number of cut backs integrationOrder = 1_pInt, &