Modeling of Brick Element and Shell Element in same model

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

Moderators: silvia, selimgunay, Moderators

Post Reply
amber22v
Posts: 5
Joined: Fri Jul 15, 2011 8:13 pm
Location: Virginia Tech

Modeling of Brick Element and Shell Element in same model

Post by amber22v »

Hello administrators and everyone,
I am new to opensees so I will appreciate any help.I have modeled a column-base connection having standard brick and shellMITC4 elements connected by truss elements. brick elements are acting as cement grout and shell elements as base plate and the load interaction between the two components above is simulated by assigning truss elements connecting them (these trusses have non linear force-deformation relationship). The problem which I am facing is that when I model my structure with .......model basic -ndm 3 -ndf 6; my model is not analysed by opensees and gives the following warning-

WARNING FE_Element::setID() - numDOF and number of dof at the DOF_Groups
WARNING BandGenLinLapackSolver::solve() -LAPACK routine returned 1
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 0.1
OpenSees > analyze failed, returned: -3 error flag

However on changing to.... model basic -ndm 3 -ndf 3; Analysis is successfully performed by opensees. But in doing so I do not get rotational degrees of freedom at every node(as only 3 dof are defined per node) and because of that my structure is acting more stiff then it should be. My understanding from this warning is that for using brick element we should have 3 degrees of freedom per node defined in the modeling environment.
QUESTION : So How can I successfully analyse this model with 6 degrees of freedom per node (model basic -ndm 3 -ndf 6) ?? offcourse I tried to restrain 3 rotation degrees of freedom of those nodes which were assigned to brick elements but It again gave me same warning as above. Following is the simplified sample of my huge code. Here I just tried with only one brick element connected with one shell element by 4 trusses. I wrote all my code in matlab and running opensees through this.

file=fopen('breakdown.tcl','w+');
fprintf(file,'wipe;\r\n');
fprintf(file,'model basic -ndm 3 -ndf 6; \r\n');
fprintf(file,'file mkdir Data; \r\n');
fprintf(file,'# nodal coordinates: \r\n');

fprintf(file,'node 1 0 0 0; \r\n');
fprintf(file,'node 2 1 0 0; \r\n');
fprintf(file,'node 3 0 1 0; \r\n');
fprintf(file,'node 4 1 1 0; \r\n');
fprintf(file,'node 5 0 0 0.5; \r\n');
fprintf(file,'node 6 1 0 0.5; \r\n');
fprintf(file,'node 7 0 1 0.5; \r\n');
fprintf(file,'node 8 1 1 0.5; \r\n');
fprintf(file,'node 9 0 0 1; \r\n');
fprintf(file,'node 10 1 0 1; \r\n');
fprintf(file,'node 11 0 1 1; \r\n');
fprintf(file,'node 12 1 1 1; \r\n');


fprintf(file,'nDMaterial ElasticIsotropic 1 29000 0.3; \r\n'); # Material for brick element
fprintf(file,'section ElasticMembranePlateSection 2 29000 0.3 0.375 0.000000734; \r\n'); # Material for shell element
fprintf(file,'uniaxialMaterial Elastic 3 29000 \r\n'); # Material for truss element

fprintf(file,'element stdBrick 1 2 4 3 1 6 8 7 5 1 \r\n');
fprintf(file,'element ShellMITC4 2 10 12 11 9 2 \r\n');

fprintf(file,'element truss 3 5 9 1.5 3;\r\n');
fprintf(file,'element truss 4 6 10 1.5 3;\r\n');
fprintf(file,'element truss 5 7 11 1.5 3;\r\n');
fprintf(file,'element truss 6 8 12 1.5 3;\r\n');

fprintf(file,'fix 1 1 1 1 1 1 1; \r\n');
fprintf(file,'fix 2 1 1 1 1 1 1; \r\n');
fprintf(file,'fix 3 1 1 1 1 1 1; \r\n');
fprintf(file,'fix 4 1 1 1 1 1 1; \r\n');
fprintf(file,'fix 5 0 0 0 1 1 1; \r\n');
fprintf(file,'fix 6 0 0 0 1 1 1; \r\n');
fprintf(file,'fix 7 0 0 0 1 1 1; \r\n');
fprintf(file,'fix 8 0 0 0 1 1 1; \r\n');

fprintf(file,'recorder Node -file Data/RBase1.out -time -node 1 -dof 3 reaction;\r\n'); # Only accounting vertical reaction
fprintf(file,'recorder Node -file Data/RBase2.out -time -node 2 -dof 3 reaction;\r\n');
fprintf(file,'recorder Node -file Data/RBase3.out -time -node 3 -dof 3 reaction;\r\n');
fprintf(file,'recorder Node -file Data/RBase4.out -time -node 4 -dof 3 reaction;\r\n');

fprintf(file,'recorder Node -file Data/DFree.out -time -node 9 -dof 3 disp;\r\n');


fprintf(file,'pattern Plain 1 Linear {load 9 0.0 0.0 -100.0 0.0 0.0 0.0;}\r\n'); # Global load of 100 kips in Z direcion
fprintf(file,'constraints Plain;\r\n');
fprintf(file,'numberer Plain;\r\n');
fprintf(file,'system BandGeneral\r\n');
fprintf(file,'test NormDispIncr 1.0 6;\r\n');
fprintf(file,'algorithm Newton; \r\n');
fprintf(file,'integrator LoadControl 0.1; \r\n');
fprintf(file,'analysis Static; \r\n');
fprintf(file,'analyze 10;\r\n');
fprintf(file,'loadConst -time 0.0;\r\n');
fprintf(file,'puts "Done!"');
fclose(file);

!OpenSees breakdown.tcl

I will appreciate if somebody can help me. Thank you in advance.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Modeling of Brick Element and Shell Element in same mod

Post by vesna »

You can define different elements in different domains. You can have brick elements in model basic -ndm 3 -ndf 3, but frame elements in model basic -ndm 3 -ndf 6. Make sure to connect them with equalDOF command.
amber22v
Posts: 5
Joined: Fri Jul 15, 2011 8:13 pm
Location: Virginia Tech

Re: Modeling of Brick Element and Shell Element in same mod

Post by amber22v »

Hello vesna,
I tried implementing your suggestion and it worked fine for the simple model given in my above post but when I tried that in my bigger model which has around 4438 nodes, It gave me following error:

WARNING BandGenLinSOE::BandGenLinSOE : ran out of memory for A (size,super,sub) (19986, 6659, 6659)
StaticAnalysis::handle() - LinearSOE::setSize() failedStaticAnalysis::analyze() - domainChanged failed at step 0 of 1
OpenSees > analyze failed, returned: -1 error flag

I added 442 nodes to these 4438 nodes by redefining nodes on the same position as nodes of base plate has. and then I constrained DOF as you suggested with equalDof command, But I don't understand why I am getting this error. Any Suggestions??

Thank You
amber22v
Posts: 5
Joined: Fri Jul 15, 2011 8:13 pm
Location: Virginia Tech

Re: Modeling of Brick Element and Shell Element in same mod

Post by amber22v »

Hello vesna,
Sorry to post again but is it necessary to define material and section each time we change the domain ?? Because if I am not doing this than it gives an error when routine tries to create truss element :
UniaxialMaterial *getUniaxialMaterial(int tag) - none found with tag: 7
WARNING: Invalid material not found element Truss 3740 $iNode $jNode $A 7 <-rho $rho> <-rayleig $flagh>
Invalid Args want: element TrussSection $tag $iNode $jNode $sectTag <-rho $rho>
TclElementCommand -- unable to create element of type : truss


Thank You
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Modeling of Brick Element and Shell Element in same mod

Post by vesna »

You need to define in current domain all objects that an element of that domain is going to use.

Here is an example on using elements defined in different domains:

model basic -ndm 3 -ndf 6;
#nodes
node 1 0 0 0;
node 2 0 0 10;
node 3 0 0 10;
# Single point constraints -- Boundary Conditions
fix 1 1 1 1 1 1 1;
fix 3 1 1 1 1 1 1;
#mass
mass 2 100 100 100 10e-10 10e-10 10e-10;

# Define ELEMENTS -----------------------------------------------------------
geomTransf Linear 1 0 -1 0;
element elasticBeamColumn 1 1 2 0.01 3.29e10 1.0e20 2.0e-5 1.0e-5 1.0e-5 1;

#contact element
model basic -ndm 3 -ndf 3;
node 12 0 0 10;
node 13 0 0 10;

equalDOF 3 13 1 2 3;
equalDOF 2 12 1 2 3;

element zeroLengthContact3D 3 12 13 1.0e+5 0.5e+5 0.5 0 3;
Post Reply