Modelling concrete slabs
Moderators: silvia, selimgunay, Moderators
Modelling concrete slabs
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
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
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.
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.
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
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
Re: Modelling concrete slabs
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.
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.
Re: Modelling concrete slabs
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.
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.
Re: Modelling concrete slabs
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
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
Re: Modelling concrete slabs
Sorry to keep pressing this but can anyone explain whats wrong with my above code?
Thanks
Thanks
Re: Modelling concrete slabs
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.
It looks like the only option for you would be to to use ShellMITC4 with ElasticMembranePlateSection.
Re: Modelling concrete slabs
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.
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.
Re: Modelling concrete slabs
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.
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.
Re: Modelling concrete slabs
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]
}
"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
Re: Modelling concrete slabs
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
}"
eval "block2D $nx $ny $startNode $startEle $Quad PlaneStress2D 1 {
1 $x1 $y1
2 $x2 $y2
3 $x3 $y3
4 $x4 $y4
}"