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, &