About NLBeamColumn element

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
jwaugh
Posts: 110
Joined: Thu Jul 15, 2004 12:20 pm
Location: HNTB - Portland ME

About NLBeamColumn element

Post by jwaugh »

The existing nonlinear beam-column element used with fiber analysis requires that the strain be constant across the width of the section at a given depth of neutral axis. I am trying to change that, and created a derived class of FiberSection3d to make this change. To do this I added some private variables to the derived class. To change the strain distribution I have to redefine the setTrialSectionDeformation function. Do I need to redifine the sendself and rcvself functions too?

Also, I am having trouble finding the place where I change in the code the FiberSection3d is called. I want to make something similar to the NLBeamColumn element but uses my FiberSection class rather than the Fiber Section3d.

Can anyone help me find how I do this, I am reading the code for NLBeamColumn, but I am not finding it. Is it somewhere else, or am I just missing it. Thanks for all the assistance.
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

1. the NLBeamColumn3d is no longer used .. look at the ForceBeamColumn element.
they are similar just not identical.

2. the ForceBEamColumn is assocaited with SectionForceDeformation objects, not FiberSection3d objects .. the line that set the strains is in the ::update() method

sections->setTrialSectionDeformation(vsSubdivide);

the element can take either Elastic or Fiber based sections .. if the interface is the same and you don't have the element calling any funky new methods in your class you don't need a new Element class.

you only need to change the sendSelf() and recvSelf() if you have some additional state or parameter that the section needs to perform it's functions.
jwaugh
Posts: 110
Joined: Thu Jul 15, 2004 12:20 pm
Location: HNTB - Portland ME

Post by jwaugh »

Frank, when I constructed the class I required 5 new parameters be passed to the constructor of the section in order to calculate the strains. So now do I need to create a new element such that when the user creates the element and the parameters can be gathered and then passed when the ection is constructed.

the constructor for FiberSection3d(int tag, int numFibers, Fiber **fibers)
my constructor is like this:

WallFiberSection3d(int tag, int numFibers, Fiber **fibers, double tf, double bf, double d, double tw, char type)

where the last 5 parameters are used in the calculation of the strain of any fiber in the cross section. I originally thought that it would be easiest to collect these parameters when the beam-column element is defined. Is there some easier way? The way I was originally thinking would require a new element, but it would be very similar to the existing nonLinearBeamColumn elelment. So would likely be pretty easy to do.

Also what is the name of the file where I specify the new commands for tcl. I am having difficulties locating it. Thanks for all you help.
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

why not just create a section wih the additional args instead of using the element to pass
the args on down .. the ele don't construct the section anyway .. if the ele needs to set
some param at the section you need to do this through some other method call.

as for the tcl parts .. start in TclElementCommands.cpp (follow the forceBEamColumn as opposed to the nonlinearBeamColumn) .. in the forceBEamColumn directory look at the
TclForceBeamColumnCommand.cpp file for the procedure to parse the args and create the ele object.
Post Reply