Hi,
I’am running a moment-curvature analysis in OpenSees when the units are in kN/m the analysis is ok, but when I change de units to N/mm I get some errors from material (ReinforcingSteel), it says:
Large trial compressive strain
UniaxialMaterial::setTrial() - material failed in setTrialStrain()
How do I solve this?
tcl code:
wipe;
model BasicBuilder -ndm 2 -ndf 3;
# selected units (values are in kN/m by default)
# options {kN_m, N_mm}
set um N_mm;
switch $um {
kN_m {
set facA 1.0; # m^2 to m^2
set facL 1.0; # m to m
set facR 1.0; # kN/m^2 to kN/m^2
}
N_mm {
set facA 1000000.0; # m^2 to mm^2
set facL 1000.0; # m to mm
set facR 0.0010; # kN/m^2 to N/mm^2
}
}
# Confined concrete
set conf_conc_tag 1;
set k 1.30;
set fc0 [expr -27500.0*$k*$facR];
set ec0 -0.0030;
set fcu [expr 0.20*$k*$fc0];
set ecu [expr 20.0*$ec0];
set lambda 0.30;
set ft [expr -0.14*$k*$fc0];
set Ets [expr 1930000.0*$facR];
uniaxialMaterial Concrete01 $conf_conc_tag $fc0 $ec0 $fcu $ecu;
puts "-----------------------------";
puts "Confinado";
puts "fc0 : $fc0";
puts "ec0 : $ec0";
puts "fcu : $fcu";
puts "ecu : $ecu";
puts "lambda : $lambda";
puts "ft : $ft";
puts "Ets : $Ets";
# Unconfined concrete
set unconf_conc_tag 2;
set k 1.0;
set fc0 [expr -27500.00*$k*$facR];
set ec0 -0.002245;
set fcu [expr -5.5*$facR];
set ecu [expr 4.0*$ec0];
uniaxialMaterial Concrete01 $unconf_conc_tag $fc0 $ec0 $fcu $ecu;
puts "-----------------------------";
puts "No Confinado";
puts "fc0 : $fc0";
puts "ec0 : $ec0";
puts "fcu : $fcu";
puts "ecu : $ecu";
puts "-----------------------------";
# Steel
set steel_tag 3;
set fy [expr 460569.9069965947*$facR];
set E0 [expr 200000000.0*$facR];
set fu [expr 630000.00*$facR];
set E2 [expr 9342650.00*$facR];
set es 0.0100;
set eu 0.150;
set b 0.01;
uniaxialMaterial ReinforcingSteel $steel_tag $fy $fu $E0 $E2 $es $eu;
puts "Acero"
puts "fy : $fy"
puts "E0 : $E0"
puts "fu : $fu"
puts "E2 : $E2"
puts "es : $es"
puts "eu : $eu"
puts "-----------------------------";
# Section
set secTag 1;
section Fiber $secTag {
patch quad $unconf_conc_tag 2 10 [expr 0.1550000*$facL] [expr 0.150000*$facL] [expr 0.1550000*$facL] [expr -0.150000*$facL] [expr 0.200000*$facL] [expr -0.150000*$facL] [expr 0.200000*$facL] [expr 0.150000*$facL];
patch quad $unconf_conc_tag 2 10 [expr -0.200000*$facL] [expr 0.150000*$facL] [expr -0.200000*$facL] [expr -0.150000*$facL] [expr -0.15500*$facL] [expr -0.150000*$facL] [expr -0.15500*$facL] [expr 0.150000*$facL];
patch quad $unconf_conc_tag 10 2 [expr -0.155000*$facL] [expr 0.150000*$facL] [expr -0.155000*$facL] [expr 0.1050000*$facL] [expr 0.155000*$facL] [expr 0.1050000*$facL] [expr 0.155000*$facL] [expr 0.150000*$facL];
patch quad $unconf_conc_tag 10 2 [expr -0.155000*$facL] [expr -0.10500*$facL] [expr -0.155000*$facL] [expr -0.150000*$facL] [expr 0.155000*$facL] [expr -0.150000*$facL] [expr 0.155000*$facL] [expr -0.10500*$facL];
patch quad $conf_conc_tag 10 10 [expr -0.155000*$facL] [expr 0.105000*$facL] [expr -0.155000*$facL] [expr -0.105000*$facL] [expr 0.155000*$facL] [expr -0.105000*$facL] [expr 0.155000*$facL] [expr 0.105000*$facL];
fiber [expr -0.15500*$facL] [expr -0.10500*$facL] [expr 0.000201*$facA] $steel_tag;
fiber [expr -0.15500*$facL] [expr 0.105000*$facL] [expr 0.000201*$facA] $steel_tag;
fiber [expr 0.155000*$facL] [expr -0.10500*$facL] [expr 0.000201*$facA] $steel_tag;
fiber [expr 0.155000*$facL] [expr 0.105000*$facL] [expr 0.000201*$facA] $steel_tag;
}
# save section to file
set fid [open section.tcl w];
puts $fid "section Fiber $secTag {";
puts $fid "patch quad $unconf_conc_tag 2 10 [expr 0.1550000*$facL] [expr 0.150000*$facL] [expr 0.1550000*$facL] [expr -0.150000*$facL] [expr 0.200000*$facL] [expr -0.150000*$facL] [expr 0.200000*$facL] [expr 0.150000*$facL];";
puts $fid "patch quad $unconf_conc_tag 2 10 [expr -0.200000*$facL] [expr 0.150000*$facL] [expr -0.200000*$facL] [expr -0.150000*$facL] [expr -0.15500*$facL] [expr -0.150000*$facL] [expr -0.15500*$facL] [expr 0.150000*$facL];";
puts $fid "patch quad $unconf_conc_tag 10 2 [expr -0.155000*$facL] [expr 0.150000*$facL] [expr -0.155000*$facL] [expr 0.1050000*$facL] [expr 0.155000*$facL] [expr 0.1050000*$facL] [expr 0.155000*$facL] [expr 0.150000*$facL];";
puts $fid "patch quad $unconf_conc_tag 10 2 [expr -0.155000*$facL] [expr -0.10500*$facL] [expr -0.155000*$facL] [expr -0.150000*$facL] [expr 0.155000*$facL] [expr -0.150000*$facL] [expr 0.155000*$facL] [expr -0.10500*$facL];";
puts $fid "patch quad $conf_conc_tag 10 10 [expr -0.155000*$facL] [expr 0.105000*$facL] [expr -0.155000*$facL] [expr -0.105000*$facL] [expr 0.155000*$facL] [expr -0.105000*$facL] [expr 0.155000*$facL] [expr 0.105000*$facL];";
puts $fid "fiber [expr -0.15500*$facL] [expr -0.10500*$facL] [expr 0.000201*$facA] $steel_tag;";
puts $fid "fiber [expr -0.15500*$facL] [expr 0.105000*$facL] [expr 0.000201*$facA] $steel_tag;";
puts $fid "fiber [expr 0.155000*$facL] [expr -0.10500*$facL] [expr 0.000201*$facA] $steel_tag;";
puts $fid "fiber [expr 0.155000*$facL] [expr 0.105000*$facL] [expr 0.000201*$facA] $steel_tag;";
puts $fid "}";
close $fid;
# axial load
set axialLoad 0.0;
# Curvature increment
set maxK [expr 0.35*$facL];
# steps
set numIncr 500;
# Define two nodes at (0,0)
node 1 0.0 0.0;
node 2 0.0 0.0;
# Fix all degrees of freedom except axial and bending
fix 1 1 1 1;
fix 2 0 1 0 ;
# tag ndI ndJ secTag
element zeroLengthSection 1 1 2 $secTag;
# Create recorder
set file_out mc_output.out;
file delete $file_out;
recorder Node -file $file_out -time -node 2 -dof 3 disp;
# Define analysis parameters
system BandGeneral;
test EnergyIncr 1.e-9 10 0;
numberer Plain;
constraints Plain;
algorithm Newton;
integrator LoadControl 0.0;
analysis Static;
# Define constant axial load
if {$axialLoad > 0.0} {
pattern Plain 1 Constant {
load 2 $axialLoad 0.0 0.0;
}
# Do one analysis for constant axial load
set ok [analyze 1];
if {$ok != 0} {
puts "--------------------------------";
puts "Carga axial aplicada fallida (P = $axialLoad)";
puts "--------------------------------";
return;
}
if {$axialLoad != 0} {
puts "--------------------------------";
puts "Carga axial aplicada correctamente (P = $axialLoad)";
puts "--------------------------------";
}
}
#
test EnergyIncr 1.e-5 10 0;
# Define reference moment
pattern Plain 2 Linear {
load 2 0.0 0.0 1.0;
}
# Compute curvature increment
set dK [expr $maxK/$numIncr];
# Use displacement control at node 2 for section analysis
integrator DisplacementControl 2 3 $dK;
# section analysis
set ok 0;
set currentDisp 0.0;
set IDctrlNode 2;
set IDctrlDOF 3;
set printFlag 0
#
while {$ok == 0 && $currentDisp <= $maxK} {
# one step
set ok [analyze 1];
# check
if {$ok != 0} {
puts "Trying NewtonWithLineSearch ...";
set typeSearch Secant; # Bisection, Secant, RegulaFalsi, InitialInterpolated
algorithm NewtonLineSearch -type $typeSearch;
set ok [analyze 1];
algorithm Newton;
}
if {$ok != 0} {
puts "Trying ModifiedNewton ...";
algorithm ModifiedNewton;
set ok [analyze 1];
algorithm Newton;
}
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1];
algorithm Newton;
}
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1];
algorithm Newton;
}
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden 10;
set ok [analyze 1];
algorithm Newton;
}
# update disp
set currentDisp [nodeDisp $IDctrlNode $IDctrlDOF];
}
#
if {$ok != 0} {
puts "--------------------------------------";
puts "Analisis Momento-Curvatura fallido";
puts "--------------------------------------";
} else {
puts "----------------------------------";
puts "Analisis Momento-Curvatura OK!";
puts "----------------------------------";
}
Is the ReinforcingSteel material sensitive to units of measure?
Moderators: silvia, selimgunay, Moderators
-
- Posts: 3
- Joined: Thu Oct 19, 2017 7:35 am
- Location: VERTICE
Re: Is the ReinforcingSteel material sensitive to units of measure?
Hola! I have never used ReinforcingSteel, but I have heard several people say that it has bugs.
-
- Posts: 916
- Joined: Mon Sep 09, 2013 8:50 pm
- Location: University of California, Berkeley
Re: Is the ReinforcingSteel material sensitive to units of measure?
To eliminate the possibility that unit change leads to other changes in your tcl file and the model, could you check the initial slope of the resulting moment curvature in both cases.
-
- Posts: 4
- Joined: Wed Jan 27, 2021 6:08 am
Re: Is the ReinforcingSteel material sensitive to units of measure?
hello Sir, I'm using the reinforcing steel in my model, and also get the same error. Could you tell more information that this material has bugs, please?
Large trial compressive strain
UniaxialMaterial::setTrial() - material failed in setTrialStrain()
thank you so much.