Before I wrote this code, I used the code written by Patxi Uriz. He used the Fatigue Material with a ZeroLength element, and the damage recorder worked just fine.
Code: Select all
uniaxialMaterial Steel01 1 60.0 29800.0 0.003
uniaxialMaterial Fatigue 2 1
element zeroLength 1 1 2 -mat 2 -dir 1
recorder Element -file "Damage.out" -time -ele 1 material 1 damage
Code: Select all
# Units & Constants
set m 1.0
set sec 1.0
set ton 1.0
set cm [expr $m/100]
set kgf [expr $ton/1000]
set kgfcm2 [expr $kgf/pow($cm,2)]
set g [expr 9.81*$m/pow($sec,2)]
set E [expr 2.04e6*$kgfcm2]
set b 0.025
set R0 18.5
set cR1 0.925
set cR2 0.15
#Fatigue Parameters
set E0 0.2048
set m -0.49
#Element Properties
set Fy [expr 2530*$kgfcm2]
set Lwp [expr 500*$cm]
set Li [expr 0.5*$Lwp]
set Lcon [expr ($Lwp-$Li)/2]
set Ai [expr 50*pow($cm,2)]
set Acon [expr 3*$Ai]
#Element Stiffness
set Ki [expr $E*$Ai/$Li]
set Kcon [expr $E*$Acon/$Lcon]
set Kbr [expr 1/(1/$Ki+2/$Kcon)]
#Brace Yielding
set Py [expr $Fy*$Ai]
set Dy [expr $Py/$Kbr]
#Coordinates
set x1 0.0
set x2 [expr $x1+$Lcon]
set x3 [expr $x2+$Li]
set x4 [expr $x3+$Lcon]
#Model
model BasicBuilder -ndm 2 -ndf 2
node 1 $x1 0.0
node 2 $x2 0.0
node 3 $x3 0.0
node 4 $x4 0.0
fix 1 1 1
fix 2 0 1
fix 3 0 1
fix 4 0 1
uniaxialMaterial Steel01 1 $Fy $E $b
uniaxialMaterial Steel02 2 $Fy $E $b $R0 $cR1 $cR2
uniaxialMaterial Fatigue 3 2 -E0 $E0 -m $m
element truss 1 1 2 $Acon 1
element truss 2 2 3 $Ai 3
element truss 3 3 4 $Acon 1
pattern Plain 1 "Linear" {
load 4 1.0 0.0 0.0
}
## Recorders
recorder Element -file "AxialForce.out" -ele all axialForce
recorder Element -file "AxialDef.out" -ele all deformations
recorder Element -file "CoreDamage.out" -ele 2 material 2 damage
#Analysis parameters
test EnergyIncr 1.0e-8 200 0
algorithm Newton
system UmfPack
numberer RCM
constraints Plain
analysis Static
#Displacement Control Node
set controlNode 4
set currentDisp [nodeDisp $controlNode 1 ]
puts [format " \n STARTING DISPLACEMENT = %5.3f \n" $currentDisp]
#Cyclic Static Analysis
set peaks [list 1.0 2.0 1.0]
for {set i 1} {$i <= [llength $peaks]} {incr i} {
set dU [expr -$Dy*pow((-1.0),$i)*[lindex $peaks [expr $i-1]]/100]
integrator DisplacementControl $controlNode 1 $dU 1 $dU $dU
analyze 100
}