Modelling concrete slabs

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

Moderators: silvia, selimgunay, Moderators

Post Reply
evxjr
Posts: 20
Joined: Mon Nov 01, 2010 4:13 am
Location: University of Nottingham

Modelling concrete slabs

Post by evxjr »

Hi anyone,

I am looking to create a full 3D model of concrete columns and flat slabs. However as yet I haven't found a way to define this. Is it possible?

Thanks
RussellJ
Posts: 1
Joined: Fri Nov 12, 2010 8:25 am
Location: University of Surrey

Post by RussellJ »

Hi evxjr,

I would be interested in doing the same thing. So far all the examples I've seen just seem to treat it as an equivalent beam frame system. However that doesn't take into account the 2-way spanning effects.

Other than that a rigid floor diaphragm might be suitable for some work.

If you find a solution please let me know, or if anyone else on here could help would be appreciated.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Post by vesna »

You can use quad elements to accurately model the slab:
http://opensees.berkeley.edu/wiki/index ... ad_Element

To generate a mesh of finite elements use block2D command:
http://opensees.berkeley.edu/wiki/index ... 2D_Command

On OpenSees Wiki there is no example of the slab using quad elements, but there is an example of a beam with quad elements:
http://opensees.berkeley.edu/wiki/index ... d_elements
evxjr
Posts: 20
Joined: Mon Nov 01, 2010 4:13 am
Location: University of Nottingham

Post by evxjr »

Hi Vesna,

Cheers for those links that's exactly what I was looking for. I shall try some things to get the hang of it.
evxjr
Posts: 20
Joined: Mon Nov 01, 2010 4:13 am
Location: University of Nottingham

Re: Modelling concrete slabs

Post by evxjr »

Vesna,

I think I have the basic idea for using quad elements and block commands but there are a couple of things I would like to check.

Are quad elements strictly 2 dimensional? ie. can I apply loading perpendicular to its face and consider the bending of it? At moment if i have more than 2 dimensions and 3 dof in the model I get the warning "model dimensions and/or nodal DOF not compatible with quad element" which suggests I can't load it as I mentioned. However related, what is the surface pressure argument for quad elements and how does that work?

If quads can't do this, is the ShellMITC4 element more appropriate? The command manual for it says that currently it must be either a PlateFiberSection or ElasticMembranePlateSection but there is no entry for platefibers yet. Do they follow the same approach as other fibersection commands?
Finally I would ideally like to be able to model the reinforcement in 2 directions in the slab under large deflections is it possible to define the right details for this with the current system?

Apologies for bombarding you with so many questions.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Modelling concrete slabs

Post by vesna »

Quad elements can be 3D. To make them 3D, when you generate mesh using block2D command define z coordinate as well. If your model is 3D you can have only 3 dofs per node. Yes, if your model is 3D you can apply load perpendicular to your elements. Surface pressure is a uniformly distributed compression force for the element acting along the boundaries of the element.

ShellMITC4 element works well with ElasticMembranePlateSection but not so good with PlateFiberSection. However you can try to test if it is going to work in your case. At the moment you can not find PlateFiberSection in the command manual but you can look for the arguments in the source code:
http://opensees.berkeley.edu/WebSVN/lis ... 0291385895

Open MembranePlateFiberSection.h to see the arguments.

At the moment there is no way of modeling a slab by defining reinforcement in two directions.
evxjr
Posts: 20
Joined: Mon Nov 01, 2010 4:13 am
Location: University of Nottingham

Re: Modelling concrete slabs

Post by evxjr »

Thanks for those answers.

However I've just tried to use Quad elements in 3D as you described but I still get the same error about dimensions and/or DOF not compatible with quad elements. My trial code is below. Is there something missing or wrongly defined then?

# 3 Dimensional Quad Test

wipe
model basic -ndm 3 -ndf 3

# Material Definition
nDMaterial ElasticIsotropic 1 1000 0.3 3.0

# Argument for Quad elements
set eleArgs "1 PlaneStrain2D 1"

# number of elements in each direction
set nx 2
set ny 2


# Create Mesh of Quads
block2D $nx $ny 1 1 quad $eleArgs {
1 0 0 0
2 10 0 0
3 10 0 10
4 0 0 10
}

# Load unrestrained nodes
pattern Plain 1 Linear {
load 5 0 10 0
load 6 0 10 0
load 7 0 10 0
load 8 0 10 0
load 9 0 10 0
}

# Fix Corner Points
fix 1 1 1 1
fix 2 1 1 1
fix 3 1 1 1
fix 4 1 1 1

# Define Analysis
integrator LoadControl 0.1
test EnergyIncr 1.0e-12 10
algorithm Newton
numberer RCM
constraints Plain
system ProfileSPD
analysis Static

# Run static analysis
analyze 10
evxjr
Posts: 20
Joined: Mon Nov 01, 2010 4:13 am
Location: University of Nottingham

Re: Modelling concrete slabs

Post by evxjr »

Sorry to keep pressing this but can anyone explain whats wrong with my above code?

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

Re: Modelling concrete slabs

Post by vesna »

Sorry for the late reply. I tried to run your code and got a message you were telling me about. I looked at the source code of the quad element and realized it works only in 2D. Sorry for giving you wrong information before.

It looks like the only option for you would be to to use ShellMITC4 with ElasticMembranePlateSection.
evxjr
Posts: 20
Joined: Mon Nov 01, 2010 4:13 am
Location: University of Nottingham

Re: Modelling concrete slabs

Post by evxjr »

Thanks for the reply. Shell elements should be OK, at least for what I'm doing for the moment.

However I've now hit another error using the block2D command.

Do you have to explicitly state the co-ordinates for each of the boundary node points or can you use a previously defined variable?

For example I want to make a general file that will run for whatever floor size I want, therefore if it is 5 x 10 I tried using this code:

wipe
model basic -ndm 2 -ndf 3

# Floor Dimensions
set X 10
set Y 5

# Define Slab Shell details

set secTag 1
set E 20000
set v 0.3
set t 100
set rho 3.0

section ElasticMembranePlateSection $secTag $E $v $t $rho

# Define and Create Mesh

set nx 10
set ny 10
set e1 1
set n1 1

# Create Mesh

set x1 0
set y1 0
set x2 $X
set y2 0
set x3 $X
set y3 $Y
set x4 0
set y4 $Y

block2D $nx $ny $e1 $n1 ShellMITC4 $secTag {
1 $x1 $y1
2 $x2 $y2
3 $x3 $y3
4 $x4 $y4
}

Just gives me the error "invalid node coordinate for node: 1 expected floating-point number but got "$x1"
Now I can't think of a way to get a floating point number in there for this case, my C++ isn't great but I've looked at the source code and also can't see a easy way round.

Any suggestions would be great, otherwise I'll just have to do it the long way of defining co-ordinates myself for each problem.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Modelling concrete slabs

Post by vesna »

Replace your Block2D command with this one:

eval " block2D $nx $ny $e1 $n1 ShellMITC4 $secTag {
1 $x1 $y1
2 $x2 $y2
3 $x3 $y3
4 $x4 $y4
} "

and it will work.

Also it is better to define the sizes and coordinates of your block as floating-point numbers than as integers.

Instead of:
set X 10
set Y 5

do this:
set X 10.
set Y 5.
cdickof
Posts: 4
Joined: Tue Nov 29, 2011 3:47 pm
Location: University of British Columbia

Re: Modelling concrete slabs

Post by cdickof »

I have been trying to do the same thing and been getting the same error. I tried to input the solution above but got a new error:

"WARNING block2D numX? numY? startNode? startELE? eleType? eleArgs? : invalid number of node args: 1"

can anyone tell me how to fix this? My code is below:

#SET PANEL NODES
set y 0; #set coord Y at origin
for {set j 0} {$j<= [expr ($floors-1)*10]} {incr j 10} {
set x 0; #set coord X at origin
if {$j<10} {
set Hstorey $ground
set ny [expr int ($ground/$space)];
} else {
set ny [expr int ($upper/$space)]
set Hstorey $upper
}
for {set i 1} {$i<=[expr $cols-1]} {incr i} {
if {$i==2} {
set nx [expr int ($bay_in/$space)]
set bay $bay_in
} else {
set nx [expr int ($bay_out/$space)]
set bay $bay_out
}
set startNode [expr ($i+$j)*1000+10000]
set startEle [expr ($i+$j)*1000]

#Panel Corner Coords
set x1 [expr $x+$gap_side]; set y1 [expr $y+$gap_bot]
set x2 [expr $x+$bay-$gap_side]; set y2 [expr $y+$gap_bot]
set x3 [expr $x+$bay-$gap_side]; set y3 [expr $y+$Hstorey+$gap_top]
set x4 [expr $x+$gap_side]; set y4 [expr $y+$Hstorey+$gap_top]

nDMaterial ElasticIsotropic 1 12000 0.25 410 #set Materal definition
set Quad quad
set eleArgs "PlaneStress2D 1"

# create the nodes and elements using the block2D command
eval "block2D $nx $ny $startNode $startEle $Quad $eleArgs {
1 $x1 $y1
2 $x2 $y2
3 $x3 $y3
4 $x4 $y4
}"

set x [expr $x+$bay]
}
set y [expr $y+$Hstorey]
}
-Carla
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Modelling concrete slabs

Post by vesna »

I do not have your whole model so test it for error. Try this:

eval "block2D $nx $ny $startNode $startEle $Quad PlaneStress2D 1 {
1 $x1 $y1
2 $x2 $y2
3 $x3 $y3
4 $x4 $y4
}"
Post Reply