shear limit curve and limit state material

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
jessicagitomarsono
Posts: 5
Joined: Wed Jan 17, 2018 8:35 pm
Location: National Taiwan University of Science and Technology

shear limit curve and limit state material

Post by jessicagitomarsono » Mon Mar 19, 2018 4:23 am

Hello,

I am working to predict the behavior of a cantilever beam under cyclic loading, before I put any limit state material, all is running good and almost the same with the experimental result (but of course without shear degradation). therefore, I need to put the shear limit state, but it always gives me error.

WARNING: CTestNormDispIncr::test() - failed to converge
after: 20 iterations current Norm: 422.67 (max: 1e-007, Norm deltaR: 8.52691e+008)
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 50356.1
OpenSees > analyze failed, returned: -3 error flag

There are some additional point I am confused right now:
1. My code can converge if I try lower value for rigid slope in limit state material, but I have to use the value I got from calculation (G.Ag/L) in spite of put arbitrary number which I dont know where it came from.
2. I also dont know the definition of V1, V2, and V3 in the example, it looks like just put an arbitrary number close to Vu
3. The "LimitStateMaterialExampleDebugged" example provided from opensees seem like giving me strange results, either for the pushover and cyclic loading. The output gives me the same value (which is very high) in every step. I did not change anything from the code, just run it.
I already check the manual by Mohammad Reza Azadi, and the reference paper by Kenneth J. Elwood but I still have no idea on the solution for my problem.

This is my code if someone is interested or having any solution or any idea, I will really appreciate it.
*sorry for the long code I put after this

# Units: N, mm, MPa;
# Column reinforced concrete fiber element;
# Cyclic loading

###################################################################################################
# Set Up & Source Definition
###################################################################################################
wipe all; # clear memory of past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm = #dimension, ndf = #dofs


###################################################################################################
# Define Building Geometry, Nodes, and Constraints
###################################################################################################
# Create nodes;
# tag X Y;
node 1 0.0 0.0;
node 4 0.0 600.0;
node 5 0.0 1500.0;
node 3 0.0 2100.0;
node 2 0.0 2100.0;

puts "nodes are ok"

# Fix supports at base of column;
# Tag DX DY RZ;
fix 1 1 1 1;

puts "fix ends ok"

# Define tags for material etc;
set IDconcCore 1; # material ID tag -- confined core concrete
set IDreinf 3; # material ID tag -- reinforcement
set IDreinf2 4; # material ID tag -- reinforcement
set sectionFiberTag 5;
set shearCurveTag 6;
set shearTag 7;
set bcTag 8;
set ZeroLengthElementTag 9;

###################################################################################################
# Define Section Properties
###################################################################################################

# Define materials for nonlinear column;
## uniaxialMaterial Concrete04 $matTag $fc $ec $ecu $Ec <$fct $et> <$beta>;
uniaxialMaterial Concrete04 $IDconcCore -37 -0.002 -0.03 28780 0 0 0;

## uniaxialMaterial Steel02 $matTag $Fy $E $b $R0 $cR1 $cR2 <$a1 $a2 $a3 $a4 $sigInit>
uniaxialMaterial Steel02 $IDreinf 420 200000 0.01 18 0.925 0.15
uniaxialMaterial Steel02 $IDreinf2 421 200000 0.01 18 0.925 0.15

puts "materials ok"

# FIBER SECTION properties -------------------------------------------------------------
# symmetric section
# y
# ^
# |
# ----------------------- --
# | o o o | | -- cover
# | | |
# | | |
# z <--- | + | H
# | | |
# | | |
# | o o o | | -- cover
# ----------------------- --
# |-------- B --------|
#
# y
# ^
# |
# ---------------------
# |\ cover /|
# | \------Top------/ |
# |c| |c|
# |o| |o|
# z <----- |v| core |v| Hsec
# |e| |e|
# |r| |r|
# | /-------Bot-----\ |
# |/ cover \|
# ---------------------
# Bsec

# Define cross-section for nonlinear column ;
# concrete fibers patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL
set HSec 600; # The height of section
set BSec 250; # The width of section
set coverH 60; # The thickness of cover concrete in y-axis
set coverB 60; # The thickness of cover concrete in z-axis
set coverY [expr $HSec/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ [expr $BSec/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set coreY [expr $coverY-$coverH]; # The distance from the section z-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
set coreZ [expr $coverZ-$coverB]; # The distance from the section y-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concreteset
set nfY 5; # number of fibers for concrete in y-direction
set nfZ 12; # number of fibers for concrete in z-direction
set numBarsD22 2; # number of longitudinal-reinforcement bars in steel layer. -- #no.7 or D22 in top and bottom (same)
set numBarsD16 1; # number of longitudinal-reinforcement bars in steel layer. -- #no.5 or D16 in top and bottom (same)
set barAreaD22 380.13; # in mm2, area of longitudinal-reinforcement bars -- #no.7 or D22
set barAreaD16 201.06; # in mm2, area of longitudinal-reinforcement bars -- #no.5 or D16
section Fiber $sectionFiberTag { # Define the fiber section
patch quadr $IDconcCore $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the core patch
#patch quadr $IDconcCover 1 $nfY -$coverY $coverZ -$coreY $coreZ $coreY $coreZ $coverY $coverZ; # Define the four cover patches
#patch quadr $IDconcCover 1 $nfY -$coreY -$coreZ -$coverY -$coverZ $coverY -$coverZ $coreY -$coreZ
#patch quadr $IDconcCover $nfZ 1 -$coverY $coverZ -$coverY -$coverZ -$coreY -$coreZ -$coreY $coreZ
#patch quadr $IDconcCover $nfZ 1 $coreY $coreZ $coreY -$coreZ $coverY -$coverZ $coverY $coverZ
layer straight $IDreinf $numBarsD22 $barAreaD22 $coreY $coreZ $coreY -$coreZ; # top layer reinfocement
layer straight $IDreinf2 $numBarsD16 $barAreaD16 $coreY $coreZ $coreY -$coreZ; # top layer reinfocement
layer straight $IDreinf $numBarsD22 $barAreaD22 -$coreY $coreZ -$coreY -$coreZ; # bottom layer reinforcement
layer straight $IDreinf2 $numBarsD16 $barAreaD16 -$coreY $coreZ -$coreY -$coreZ; # bottom layer reinforcement
}; # end of fibersection definition

puts "sections ok"

###################################################################################################
# Define Section Elements (Beam Column Element)
###################################################################################################

# Set up geometric transformations of element
geomTransf Linear 1;

puts "Geometric Transformation ok"

# Create the columns using "displacement controlled beam-column elements";
# element dispBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag <-mass $massDens> <-cMass> <-integration $intType>;
element dispBeamColumn $bcTag 1 4 5 $sectionFiberTag 1;
element dispBeamColumn 28 4 5 5 $sectionFiberTag 1;
element dispBeamColumn 29 5 3 5 $sectionFiberTag 1;

puts "Element ok"

###################################################################################################
# Define Shear Failure Spring
###################################################################################################

# slopes of shear spring backbone
set rigidSlope [expr 868966]; #Values when using zero-length spring (G*Ag/L)
set Kdeg [expr 3633.41];

# residual shear capacity
set Fres [expr 21071.0];

# strengths for initial response
set Vi1 [expr 140000.0];
set Vi2 [expr 220000.0];
set Vi3 [expr 300000.0];

# limitCurve Shear $curveTag $eleTag $rho $fc $b $h $d $Fsw $Kdeg $Fres $defType $forType <$ndI $ndJ $dof $perpDirn $delta>
limitCurve Shear $shearCurveTag $bcTag 0.004 37 250 600 540 197920 $Kdeg $Fres 2 0 1 2 1 2 0.0;

# define HystereticMaterial
set pinchX 0.4; # pinching factor for strain (or deformation) during reloading
set pinchY 0.4; # pinching factor for stress (or force) during reloading
set damage1 0.0; # damage due to ductility: D1(m-1)
set damage2 0.0; # damage due to energy: D2(Ei/Eult)
set beta 0.4; # only to be used with version 1.3
# uniaxialMaterial LimitState $matTag $s1p $e1p $s2p $e2p $s3p $e3p $s1n $e1n $s2n $e2n $s3n $e3n $pinchX $pinchY $damage1 $damage2 $beta $curveTag $curveType.
uniaxialMaterial LimitState $shearTag $Vi1 [expr $Vi1/$rigidSlope] $Vi2 [expr $Vi2/$rigidSlope] $Vi3 [expr $Vi3/$rigidSlope] [expr -$Vi1] [expr -$Vi1/$rigidSlope] [expr -$Vi2] [expr -$Vi2/$rigidSlope] [expr -$Vi3] [expr -$Vi3/$rigidSlope] $pinchX $pinchY $damage1 $damage2 $beta $shearCurveTag 2 0;

puts "shear spring ok"

###################################################################################################
# Define the zero-length
###################################################################################################
set rigidMatTag 10;
set centerSlipTag 15;
uniaxialMaterial Elastic $rigidMatTag 999e9;

# element zeroLength $eleTag $iNode $jNode -mat $matTag1 $matTag2 ... -dir $dir1 $dir2 ...<-doRayleigh $rFlag> <-orient $x1 $x2 $x3 $yp1 $yp2 $yp3>
element zeroLength $ZeroLengthElementTag 3 2 -mat $shearTag $rigidMatTag $rigidMatTag -dir 1 2 6

puts "zero length element ok"

############################################################################
# Recorders
############################################################################
# record drift histories

# record base shear reactions
recorder Node -file reaction.out -time -node 2 -dof 1 2 reaction;

# record column forces in global coordinates
recorder Element -file ele1global.out -time -ele $bcTag globalForce;

# record element stress strain at certain coordinate of fiber
# recorder Element <-file $fileName> <-xml $fileName> <-binary $fileName> <-precision $nSD> <-time> <-closeOnWrite> <-dT $deltaT> <-ele ($ele1 $ele2 ...)> <-eleRange $startEle $endEle> <-region $regTag> $arg1 $arg2
recorder Element -xml stressstrain.out -time -ele $bcTag section $sectionFiberTag fiber 0 0 $IDconcCore stressStrain;
recorder Element -xml stressstraincover.out -time -ele $bcTag section $sectionFiberTag fiber $coverY $coverZ $IDconcCore stressStrain;
recorder Element -xml stressstrainreinf.out -time -ele $bcTag section $sectionFiberTag fiber $coreY 0 $IDreinf2 stressStrain;
recorder Element -xml stressstrainreinf2.out -time -ele $bcTag section $sectionFiberTag fiber $coreY $coreZ $IDreinf stressStrain;

# record node displacement
recorder Node -file disp.out -time -node 2 -dof 1 2 3 disp;
recorder Node -file disp2.out -time -node 3 -dof 1 2 3 disp;

# record and plot node displacement
recorder Node -file topdisp.out -time -node 2 -dof 1 disp;
recorder plot topdisp.out Node2_Xdisp 10 10 300 300 -columns 2 1;

puts "recorder ok";

#######################################################################################
# #
# Analysis Section #
# #
#######################################################################################

# Cyclic Loading
############################################################################

# Assign lateral load pattern; (reference force)
set L 1;
# pattern Plain $patternTag $tsTag <-fact $cFactor> {load $nodeTag (ndf $LoadValues)};
pattern Plain 2 Linear {load 2 $L 0.0 0.0
};

puts " ok ";

# Analysis commands;
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-7 20 1;
algorithm Newton;
analysis Static;
# Perform the analysis;

# integrator DisplacementControl $node $dof $incr <$numIter $?Umin $?Umax>;
# 0.25%, target displacement 5.25 mm
integrator DisplacementControl 2 1 0.25
analyze 21
integrator DisplacementControl 2 1 -0.25
analyze 42
integrator DisplacementControl 2 1 0.25
analyze 42
integrator DisplacementControl 2 1 -0.25
analyze 42
integrator DisplacementControl 2 1 0.25
analyze 42
integrator DisplacementControl 2 1 -0.25
analyze 42
# 0.5%, target displacement 10.5 mm
integrator DisplacementControl 2 1 0.25
analyze 63
integrator DisplacementControl 2 1 -0.25
analyze 84
integrator DisplacementControl 2 1 0.25
analyze 84
integrator DisplacementControl 2 1 -0.25
analyze 84
integrator DisplacementControl 2 1 0.25
analyze 84
integrator DisplacementControl 2 1 -0.25
analyze 84
# 0.75%, target displacement 15.75 mm
integrator DisplacementControl 2 1 0.75
analyze 35
integrator DisplacementControl 2 1 -0.75
analyze 42
integrator DisplacementControl 2 1 0.75
analyze 42
integrator DisplacementControl 2 1 -0.75
analyze 42
integrator DisplacementControl 2 1 0.75
analyze 42
integrator DisplacementControl 2 1 -0.75
analyze 42
# 1.0%, target displacement 21 mm
integrator DisplacementControl 2 1 0.75
analyze 49
integrator DisplacementControl 2 1 -0.75
analyze 56
integrator DisplacementControl 2 1 0.75
analyze 56
integrator DisplacementControl 2 1 -0.75
analyze 56
integrator DisplacementControl 2 1 0.75
analyze 56
integrator DisplacementControl 2 1 -0.75
analyze 56
# 1.25%, target displacement 26.25 mm
integrator DisplacementControl 2 1 0.75
analyze 63
integrator DisplacementControl 2 1 -0.75
analyze 70
integrator DisplacementControl 2 1 0.75
analyze 70
integrator DisplacementControl 2 1 -0.75
analyze 70
integrator DisplacementControl 2 1 0.75
analyze 70
integrator DisplacementControl 2 1 -0.75
analyze 70
# 1.5%, target displacement 31.5 mm
integrator DisplacementControl 2 1 0.75
analyze 77
integrator DisplacementControl 2 1 -0.75
analyze 84
integrator DisplacementControl 2 1 0.75
analyze 84
integrator DisplacementControl 2 1 -0.75
analyze 84
integrator DisplacementControl 2 1 0.75
analyze 84
integrator DisplacementControl 2 1 -0.75
analyze 84
# 1.75%, target displacement 36.75 mm
integrator DisplacementControl 2 1 0.75
analyze 91
integrator DisplacementControl 2 1 -0.75
analyze 98
integrator DisplacementControl 2 1 0.75
analyze 98
integrator DisplacementControl 2 1 -0.75
analyze 98
integrator DisplacementControl 2 1 0.75
analyze 98
integrator DisplacementControl 2 1 -0.75
analyze 98
# 2.0%, target displacement 42 mm
integrator DisplacementControl 2 1 1.75
analyze 45
integrator DisplacementControl 2 1 -1.75
analyze 48
integrator DisplacementControl 2 1 1.75
analyze 48
integrator DisplacementControl 2 1 -1.75
analyze 48
integrator DisplacementControl 2 1 1.75
analyze 48
integrator DisplacementControl 2 1 -1.75
analyze 48
# 1.0%, target displacement 21 mm
integrator DisplacementControl 2 1 1.75
analyze 36
integrator DisplacementControl 2 1 -1.75
analyze 24
# 2.5%, target displacement 52.5 mm
integrator DisplacementControl 2 1 1.75
analyze 42
integrator DisplacementControl 2 1 -1.75
analyze 60
integrator DisplacementControl 2 1 1.75
analyze 60
integrator DisplacementControl 2 1 -1.75
analyze 60
# 3.0%, target displacement 63 mm
integrator DisplacementControl 2 1 1.75
analyze 66
integrator DisplacementControl 2 1 -1.75
analyze 72
integrator DisplacementControl 2 1 1.75
analyze 72
integrator DisplacementControl 2 1 -1.75
analyze 72
# 1.0%, target displacement 21 mm
integrator DisplacementControl 2 1 1.75
analyze 48
integrator DisplacementControl 2 1 -1.75
analyze 24
# 3.5%, target displacement 73.5 mm
integrator DisplacementControl 2 1 1.75
analyze 54
integrator DisplacementControl 2 1 -1.75
analyze 84
integrator DisplacementControl 2 1 1.75
analyze 84
integrator DisplacementControl 2 1 -1.75
analyze 84
# 4.0%, target displacement 84 mm
integrator DisplacementControl 2 1 1.75
analyze 90
integrator DisplacementControl 2 1 -1.75
analyze 96
integrator DisplacementControl 2 1 1.75
analyze 96
integrator DisplacementControl 2 1 -1.75
analyze 96
# 1.0%, target displacement 21 mm
integrator DisplacementControl 2 1 1.75
analyze 60
integrator DisplacementControl 2 1 -1.75
analyze 24
# 4.5%, target displacement 94.5 mm
integrator DisplacementControl 2 1 1.75
analyze 66
integrator DisplacementControl 2 1 -1.75
analyze 108
integrator DisplacementControl 2 1 1.75
analyze 108
integrator DisplacementControl 2 1 -1.75
analyze 108
# 5.0%, target displacement 105 mm
integrator DisplacementControl 2 1 1.75
analyze 114
integrator DisplacementControl 2 1 -1.75
analyze 120
integrator DisplacementControl 2 1 1.75
analyze 120
integrator DisplacementControl 2 1 -1.75
analyze 120
integrator DisplacementControl 2 1 1.75
analyze 60

puts " ok ";
wipe

jessicagitomarsono
Posts: 5
Joined: Wed Jan 17, 2018 8:35 pm
Location: National Taiwan University of Science and Technology

Re: shear limit curve and limit state material

Post by jessicagitomarsono » Thu Mar 22, 2018 8:38 pm

Is there anyone who had been using or experiencing this kind of problem using this limit curve? :D

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: shear limit curve and limit state material

Post by selimgunay » Sun Mar 25, 2018 3:00 pm

Nonconvergence is quite normal in nonlinear analysis. You need to use adaptive solution strategies to overcome nonconvergence. Below is an example for dynamic cases, but it can be easily modified for cyclic. Please try the adaptive solution and let me know how it works.

set Tol 1.0e-8;
set maxNumIter 100;
set printFlag 0;
set NewmarkGamma 0.5;
set NewmarkBeta 0.25;
set TestType EnergyIncr;

set algorithmType NewtonLineSearch;
for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
puts "$ik"
# puts "$ik"
set ok [analyze 1 $dtForAnalysis]
# Convergence
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BackwardEuler ...";
integrator BackwardEuler;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
if {$ok != 0} {
puts "Trying OS ...";
integrator AlphaOS 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying OSG ...";
integrator AlphaOSGeneralized 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-7 ...";
test $TestType 1.0e-7 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-6 ...";
test $TestType 1.0e-6 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-5 ...";
test $TestType 1.0e-5 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/2.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/4.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/8.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/16.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/32.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/64.0]
test $TestType $Tol $maxNumIter $printFlag;
};





if {$ok != 0} {
set Nstepsmax [expr $ik-1]
break;
}

}

if {[expr $ik-1] == $Nsteps} {

set AnalysisA [expr 1] } else {

set AnalysisA [expr 0] };

puts "Analysis completion=$AnalysisA"

set fileid10 [open "ConvergenceIndicator.txt" a];
puts $fileid10 "$AnalysisA"
close $fileid10

jessicagitomarsono
Posts: 5
Joined: Wed Jan 17, 2018 8:35 pm
Location: National Taiwan University of Science and Technology

Re: shear limit curve and limit state material

Post by jessicagitomarsono » Wed Mar 28, 2018 5:44 am

Thanks for your answer and suggestion Mr. Selim.
I really appreciate it!

Post Reply