“nDMaterial Template3Dep” command

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

Moderators: silvia, selimgunay, Moderators

Post Reply
WAELL
Posts: 8
Joined: Fri Aug 05, 2005 10:26 pm

“nDMaterial Template3Dep” command

Post by WAELL »

Hello Silvia / All:

I built a small model consists of one stander brick element with 4 fixed nodes and the other four nodes are loaded. I used “nDMaterial Template3Dep” command to describe the material but it seams that there is a problem in the material model. I had he following massage:

ElasticIsotropicMaterial::getCopy—subclass responsibility

I have three inquires

1- Is there any mistake in my material model? (I am attaching a copy of the example)

2- Do you know the meaning of the massage?

3- If you have any example that runs using “nDMaterial Template3Dep” command, please send it to me. I tried many examples in the literatures and provided by OpenSees developers but unfortunately they did not run.

My e-mail is waell_ab@yahoo.com

Thank you in advance
WAELL


#---------------
#My Example
#--------------
# Create The Modelbuilder
#------------------------
model BasicBuilder -ndm 3 -ndf 3

# ----------------
# Build The Model
# ----------------

# Node X Y Z
node 1 0 0 0
node 2 0 0 1
node 3 1 0 1
node 4 1 0 0
node 5 0 1 0
node 6 0 1 1
node 7 1 1 1
node 8 1 1 0

fix 1 1 1 1
fix 4 1 1 1
fix 8 1 1 1
fix 5 1 1 1
#------------------
# Template Material
#------------------

nDMaterial ElasticIsotropic 1 2.0e7 0.2
set ys "-RMC01"
set ps "-RMC01"
set el "-Leq 1.70021"
set eps "-NOS 1 1.0"

nDMaterial Template3Dep 10 1 -YS $ys -PS $ps -EPS $eps -ELS1 $el
#------------------------------------------------
element stdBrick 1 5 6 7 8 1 2 3 4 10

#----------------------
# DEFINE APPLIED LOADS:
#----------------------
# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 Linear {
# Node FX FY MZ
load 2 10000 0.0 0.0
load 3 10000 0.0 0.0
load 6 0.0 0.0 10000
load 7 0.0 0.0 10000
}
#-------------------------------------------------------
# MODIFICATION FOR PUSHOVER ANALYSSI
#--------------------------------------------------------------------
set dU 0.01; # Displacement increment
# change integ. schem to disp control; node dof init Jd min max
integrator DisplacementControl 3 1 $dU 1 $dU $dU
#--------------------------------------------------------------------

# RECORD RESULTS
#-------------------------------------------------------
recorder Node -file Node6.osp -time -node 6 -dof 1 disp
recorder Element 1 -time -file elemnt1.out localForce
#-------------------------------------------------------
# ANALYSIS GENERATION:
#------------------------------------------------------------------------------
system BandGeneral; # Create system of equation, a banded general system
constraints Transformation; # Create the constraint handler, the transf method
numberer RCM; # Create the DOF numberer, a plain numbering scheme
test NormDispIncr 1.0e-12 10 0; # convgnc test, with a tol of 1e-12 and a max nO of iter of 10
algorithm Newton; # Create the solution algorithm, a Newton-Raphson algorithm
analysis Static; # Create the analysis object

#-----------------------------------------------------------------------------
# PERFORM THE ANALYSIS:
#------------------------------------------
set maxU 1; # Max allowable displacement
set numSteps [expr int($maxU/$dU)]
analyze $numSteps; # Perform the displacement control
#-----------------------------------------------------------
# OUT PUT RESULTS:
#----------------------------------------------------------
print node 3 6; # Print out the state of nodes 3 and 6

print element; # Print out the state of ALL element
#----------------------------------------------------------
[/list][/code]
Waell Abou Elmagd
PhD Student
McMaster University
Canada
Boris
Posts: 95
Joined: Mon Jun 14, 2004 3:57 pm
Location: UC Davis

Template3Dep

Post by Boris »

Hello there,

There should be a number of examples on my web site:
http://sokocalo.engr.ucdavis.edu/~jeremic/

and also at in the EXAMPLES directory of OpenSees distribution...

BOris
aneeman
Posts: 90
Joined: Thu Jan 12, 2006 1:13 pm
Contact:

checking it out

Post by aneeman »

You should be using ElasticIsotropic3D rather than ElasticIsotropic; I was able to get your code to run when I used the ElasticIsotropic3D and made the brick material elasticisotropic3D. So there may be some other problem in how you're calling Template3Dep (parameters?).

On the other side, it oughtn't be possible to call ElasticIsotropic straight since its an abstract C++ class - that's a small bug in the source code and the documentation.
(see line 294 in TclModelBuilderNDMaterial.cpp)
aneeman
Posts: 90
Joined: Thu Jan 12, 2006 1:13 pm
Contact:

p.s.

Post by aneeman »

p.s. it looks like you will also need to provide rho for ElasticIsotropic3D
WAELL
Posts: 8
Joined: Fri Aug 05, 2005 10:26 pm

Post by WAELL »

Hello Dr. Boris:

After I used ElasticIsotropic3D instead of ElasticIsotropic command (I am attaching the input file after correction)

I tried

1- All of the material models examples posted in your website
2- Examples in EXAMPLES directory of OpenSees distribution
3- Number of examples in your OpenSees UCD Computational CompGeomech Command Manual
4- I also tied some examples in your Draft Lecture Notes.

But unfortunately no one of them gives me any results. So either there is a bug in the “nDMaterial Template3Dep” command itself or I made a mistake in building my very simple model.

It will be appreciated if you can take a look on my simple input file and tell me that is the problem with it or provide me with a certain example that uses “nDMaterial Template3Dep” command and can give results.

Thank you in advance for your time

p.c the error massage now is (Template3Dep::getCopy failed to get model: ThreeDimensional)

#------------------------
# Create The Modelbuilder
#------------------------
model BasicBuilder -ndm 3 -ndf 3

# ----------------
# Build The Model
# ----------------

# Node X Y Z
node 1 0 0 0
node 2 0 0 1
node 3 1 0 1
node 4 1 0 0
node 5 0 1 0
node 6 0 1 1
node 7 1 1 1
node 8 1 1 0

fix 1 1 1 1
fix 4 1 1 1
fix 8 1 1 1
fix 5 1 1 1
#----------------------
# The Template Material
#----------------------

nDMaterial ElasticIsotropic3D 1 2.0e7 0.12 2.2
set ys "-RMC01"
set ps "-RMC01"
set el "-Leq 1.70021"
set eps "-NOS 1 1.0"

nDMaterial Template3Dep 10 1 -YS $ys -PS $ps -EPS $eps -ELS1 $el

#------------------------------------------------
element stdBrick 1 5 6 7 8 1 2 3 4 10

#----------------------
# DEFINE APPLIED LOADS:
#----------------------

# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 Linear {
# Node FX FY MZ
load 2 100000 0.0 0.0
load 3 100000 0.0 0.0
load 6 0.0 0.0 100000
load 7 0.0 0.0 100000
}
#-------------------------------------------------------
# MODIFICATION FOR PUSHOVER ANALYSSI
#--------------------------------------------------------------------
set dU 0.01; # Displacement increment
# change integ. schem to disp control; node dof init Jd min max
integrator DisplacementControl 3 1 $dU 1 $dU $dU
#--------------------------------------------------------------------

# RECORD RESULTS
#-------------------------------------------------------
recorder Node -file Node6.osp -time -node 6 -dof 1 disp
recorder Element 1 -time -file elemnt1.out localForce
#-------------------------------------------------------
# ANALYSIS GENERATION:
#-----------------------------------------------------------------------------------
system BandGeneral; # Create system of equation, a banded general system
constraints Transformation; # Create the constraint handler, the transf method
numberer RCM; # Create the DOF numberer, a plain numbering scheme
test NormDispIncr 1.0e-12 10 0; # convgnc test, with a tol of 1e-12 and a max nO of iter of 10
algorithm Newton; # Create the solution algorithm, a Newton-Raphson algorithm
analysis Static; # Create the analysis object

#-----------------------------------------------------------------------------------
# PERFORM THE ANALYSIS:
#------------------------------------------
set maxU 1; # Max allowable displacement
set numSteps [expr int($maxU/$dU)]
analyze $numSteps; # Perform the displacement control
#-----------------------------------------------------------
# OUTPUT RESULTS:
#----------------------------------------------------------
print node 3 6; # Print out the state of nodes 3 and 6
print element; # Print out the state of ALL element
#----------------------------------------------------------
Waell Abou Elmagd
PhD Student
McMaster University
Canada
Boris
Posts: 95
Joined: Mon Jun 14, 2004 3:57 pm
Location: UC Davis

HMMM

Post by Boris »

Interestingly enough they all work fine on my machine???

See other note about NewTemplate3Dep, this old Template3Dep stuff is not maintained any more...

Boris
aneeman
Posts: 90
Joined: Thu Jan 12, 2006 1:13 pm
Contact:

Post by aneeman »

OK, here's what I found. Template3Dep (your code) will work with Brick8n

using Template3Dep with stdBrick seems to be broken. I was able to fix the Brick.cpp constructor,
(I changed the theMaterial.GetCopy("ThreeDimensional")
to
theMaterial.getCopy(); which got rid of the error message,
"Template3Dep::getCopy failed to get model ThreeDimensional")
but then it broken further on when using the Template3Dep.

too much for me, good luck,

alisa
Post Reply