Re: Adding new elements
Hi Mikael,
do you have Quad1MindlinShell3D example? Thanks, Svemir.
You are not logged in. Please login or register.
OOFEM forum → Modules/Add-Ons → Adding new elements
Hi Mikael,
do you have Quad1MindlinShell3D example? Thanks, Svemir.
Hi Svemir
I never got around to make an generate an example file to test with, so unfortunately not (the class is completely untested so far).
I whipped something up right now, which is supposed to work, but currently doesn't. I'll try to patch it to work in the weekend
quad1mindlin3d.out
Testing
NonLinearStatic nsteps 1 nmodules 1 controlmode 1 rtolv 1.e-8 rtold 1e8
vtkxml tstep_all domain_all primvars 1 1 stype 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 9 nelem 4 ncrosssect 1 nmat 1 nbc 3 nic 0 nltf 1
node 1 coords 3 -0.5 -0.5 0.0 bc 6 1 1 1 1 1 1
node 2 coords 3 0.0 -0.5 0.0 bc 6 0 0 0 0 0 0
node 3 coords 3 0.5 -0.5 0.0 bc 6 0 0 0 0 0 0
node 4 coords 3 -0.5 0.0 0.0 bc 6 1 1 1 1 1 1
node 5 coords 3 0.0 0.0 0.0 bc 6 0 0 0 0 0 0 load 1 2
node 6 coords 3 0.5 0.0 0.0 bc 6 0 0 0 0 0 0
node 7 coords 3 -0.5 0.5 0.0 bc 6 1 1 1 1 1 1
node 8 coords 3 0.0 0.5 0.0 bc 6 0 0 0 0 0 0
node 9 coords 3 0.5 0.5 0.0 bc 6 0 0 0 0 0 0
Quad1MindlinShell3d 1 nodes 4 1 2 5 4 mat 1 crossSect 1
Quad1MindlinShell3d 2 nodes 4 2 3 6 5 mat 1 crossSect 1
#boundaryLoads 2 3 2
Quad1MindlinShell3d 3 nodes 4 4 5 8 7 mat 1 crossSect 1
Quad1MindlinShell3d 4 nodes 4 5 6 9 8 mat 1 crossSect 1
#boundaryLoads 2 3 2
SimpleCS 1 thick 0.01
IsoLE 1 d 0. E 2.1E11 n 0.3 tAlpha 0.000012
BoundaryCondition 1 loadTimeFunction 1 prescribedvalue 0
NodalLoad 2 loadTimeFunction 1 Components 6 0. 0. -1.0e6 0. 0. 0.
ConstantEdgeLoad 3 loadTimeFunction 1 ndofs 3 loadtype 3 Components 6 0. 0. -1.0e6 0. 0. 0.
ConstantFunction 1 f(t) 1.0
The only thing different with this element is that there is an optional parameter "alpha" which scales the fictional drilling stiffness (so that all 6 dofs are determined).
Mikael,
do you have any idea why this doesn't work
truss3d.out
Test of truss3d element
LinearStatic nsteps 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 3 nelem 2 ncrosssect 1 nmat 1 nbc 3 nic 0 nltf 1
node 1 coords 3 0.0 0.0 0.0 bc 6 1 1 1 1 1 1
node 2 coords 3 1.0 0.0 0.0 bc 6 0 1 1 1 1 1
node 3 coords 3 2.0 0.0 0.0 bc 6 0 1 1 1 1 1 load 1 2
Truss3d 1 nodes 2 1 2 mat 1 crossSect 1
Truss3d 2 nodes 2 2 3 mat 1 crossSect 1
Truss3d 3 nodes 2 3 4 mat 1 crossSect 1
SimpleCS 1 area 0.01
IsoLE 1 d 7.8E3 E 2.1E11 n 0.3 tAlpha 1.2e-5
BoundaryCondition 1 loadTimeFunction 1 prescribedvalue 0.0
NodalLoad 2 loadTimeFunction 1 Components 6 100.0 0.0 0.0 0.0 0.0 0.0
ConstantFunction 1 f(t) 1.
Svemir,
Yes, you name nelem = 2 instead of 3, also nbc = 3 instead of 2 and the last issue is that your third element references node 4, which doesn't exist.
I just pushed some fixes so that quad1mindlinshell3d now runs, but it doesn't look quite right yet, so I'll have to investigate further.
Edit: Nevermind, I realized that i had changed the loads. The 3D shell gives the same results as the 2D plate.
Now the following test works fine
quad1mindlin3d.out
Testing
NonLinearStatic nsteps 1 nmodules 1 controlmode 1 rtolv 1.e-8 rtold 1e8
vtkxml tstep_all domain_all primvars 1 1 stype 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 9 nelem 4 ncrosssect 1 nmat 1 nbc 3 nic 0 nltf 1
node 1 coords 3 -0.5 -0.5 0.0 bc 6 1 1 1 1 1 1
node 2 coords 3 0.0 -0.5 0.0 bc 6 0 0 0 0 0 0
node 3 coords 3 0.5 -0.5 0.0 bc 6 0 0 0 0 0 0
node 4 coords 3 -0.5 0.0 0.0 bc 6 1 1 1 1 1 1
node 5 coords 3 0.0 0.0 0.0 bc 6 0 0 0 0 0 0
node 6 coords 3 0.5 0.0 0.0 bc 6 0 0 0 0 0 0
node 7 coords 3 -0.5 0.5 0.0 bc 6 1 1 1 1 1 1
node 8 coords 3 0.0 0.5 0.0 bc 6 0 0 0 0 0 0
node 9 coords 3 0.5 0.5 0.0 bc 6 0 0 0 0 0 0
Quad1MindlinShell3d 1 nodes 4 1 2 5 4 mat 1 crossSect 1
Quad1MindlinShell3d 2 nodes 4 2 3 6 5 mat 1 crossSect 1 boundaryLoads 2 3 2
Quad1MindlinShell3d 3 nodes 4 4 5 8 7 mat 1 crossSect 1
Quad1MindlinShell3d 4 nodes 4 5 6 9 8 mat 1 crossSect 1 boundaryLoads 2 3 2
SimpleCS 1 thick 0.01
IsoLE 1 d 0. E 2.1E11 n 0.3 tAlpha 0.000012
BoundaryCondition 1 loadTimeFunction 1 prescribedvalue 0
NodalLoad 2 loadTimeFunction 1 Components 6 0. 0. -1.e6 0. 0. 0.
ConstantEdgeLoad 3 loadTimeFunction 1 ndofs 6 loadtype 6 Components 6 0. 0. -1.e6 0. 0. 0.
ConstantFunction 1 f(t) 1.0
which it gives the same results as the 2d quad1mindlin.
Hi,
is there any progress with quadrilateral shell 3d elements?
Hi svemir. The quad1mindlinshell3d element is in the code, and simple examples seems to work.
Fictional torsion stiffness should also be present, and can be set by adjusting the optional parameter alpha (alpha = 0 would turn off torsion stiffness).
There are probably bugs. If you could supply me with a sample mesh of a 3D object I could test it out more.
Hi Mikael,
can you please show me how to apply pressure load on shell element in previous example?
Thanks, Svemir.
Pressure load wasn't implemented yet, only gravity load. Support for each type of boundary condition must be added explicitly for more "exotic" elements like this.
Edit:
I'm not even sure about the mathematics for pressure loads. Should there be contributions to the rotational DOFs?
I added some code which adds support for the ConstantPressureLoad b.c.
quad1mindlin3d.out
Testing
NonLinearStatic nsteps 1 nmodules 1 controlmode 1 rtolv 1.e-8 rtold 1e8
vtkxml tstep_all domain_all primvars 1 1 stype 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 9 nelem 4 ncrosssect 1 nmat 1 nbc 4 nic 0 nltf 1
node 1 coords 3 -0.5 -0.5 0.0 bc 6 1 1 1 1 1 1
node 2 coords 3 0.0 -0.5 0.0 bc 6 0 0 0 0 0 0
node 3 coords 3 0.5 -0.5 0.0 bc 6 0 0 0 0 0 0
node 4 coords 3 -0.5 0.0 0.0 bc 6 1 1 1 1 1 1
node 5 coords 3 0.0 0.0 0.0 bc 6 0 0 0 0 0 0
node 6 coords 3 0.5 0.0 0.0 bc 6 0 0 0 0 0 0
node 7 coords 3 -0.5 0.5 0.0 bc 6 1 1 1 1 1 1
node 8 coords 3 0.0 0.5 0.0 bc 6 0 0 0 0 0 0
node 9 coords 3 0.5 0.5 0.0 bc 6 0 0 0 0 0 0
Quad1MindlinShell3d 1 nodes 4 1 2 5 4 mat 1 crossSect 1 boundaryLoads 2 4 2
Quad1MindlinShell3d 2 nodes 4 2 3 6 5 mat 1 crossSect 1 boundaryLoads 2 4 2
Quad1MindlinShell3d 3 nodes 4 4 5 8 7 mat 1 crossSect 1 boundaryLoads 2 4 2
Quad1MindlinShell3d 4 nodes 4 5 6 9 8 mat 1 crossSect 1 boundaryLoads 2 4 2
SimpleCS 1 thick 0.01
IsoLE 1 d 0. E 2.1E11 n 0.3 tAlpha 0.000012
BoundaryCondition 1 loadTimeFunction 1 prescribedvalue 0
# unused for now
NodalLoad 2 loadTimeFunction 1 Components 6 0. 0. -1.e6 0. 0. 0.
# unused for now
ConstantEdgeLoad 3 loadTimeFunction 1 ndofs 6 loadtype 6 Components 6 0. 0. -1.e6 0. 0. 0.
# ndofs lacks meaning here,
ConstantPressureLoad 4 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 1.e6
ConstantFunction 1 f(t) 1.0
At a glance it looks OK.
Edit2:
You can also use sets to apply boundary conditions now. This will be the preferred way to apply dirichlet b.c.s, and soon, also neumann b.c.s.
quad1mindlin3d.out
Testing
NonLinearStatic nsteps 1 nmodules 1 controlmode 1 rtolv 1.e-8 rtold 1e8
vtkxml tstep_all domain_all primvars 1 1 stype 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 9 nelem 4 ncrosssect 1 nmat 1 nbc 4 nic 0 nltf 1 nset 1
node 1 coords 3 -0.5 -0.5 0.0
node 2 coords 3 0.0 -0.5 0.0
node 3 coords 3 0.5 -0.5 0.0
node 4 coords 3 -0.5 0.0 0.0
node 5 coords 3 0.0 0.0 0.0
node 6 coords 3 0.5 0.0 0.0
node 7 coords 3 -0.5 0.5 0.0
node 8 coords 3 0.0 0.5 0.0
node 9 coords 3 0.5 0.5 0.0
Quad1MindlinShell3d 1 nodes 4 1 2 5 4 mat 1 crossSect 1 boundaryLoads 2 4 2
Quad1MindlinShell3d 2 nodes 4 2 3 6 5 mat 1 crossSect 1 boundaryLoads 2 4 2
Quad1MindlinShell3d 3 nodes 4 4 5 8 7 mat 1 crossSect 1 boundaryLoads 2 4 2
Quad1MindlinShell3d 4 nodes 4 5 6 9 8 mat 1 crossSect 1 boundaryLoads 2 4 2
SimpleCS 1 thick 0.01
IsoLE 1 d 0. E 2.1E11 n 0.3 tAlpha 0.000012
BoundaryCondition 1 loadTimeFunction 1 values 6 0. 0. 0. 0 0. 0. dofs 6 1 2 3 4 5 6 set 1
# unused for now
NodalLoad 2 loadTimeFunction 1 Components 6 0. 0. -1.e6 0. 0. 0.
# unused for now
ConstantEdgeLoad 3 loadTimeFunction 1 ndofs 6 loadtype 6 Components 6 0. 0. -1.e6 0. 0. 0.
# ndofs lacks meaning here,
ConstantPressureLoad 4 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 1.e6
ConstantFunction 1 f(t) 1.0
# BoundaryCondition 1 is connected to this set of nodes:
Set 1 nodes 3 1 4 7
Hi Mikael,
I am getting this error after code is updated! Did you commit your changes to server?
Error: (.\structuralelement.C:267)
Class: Quad1MindlinShell3D, number: 1
computeSurfaceLoadVectorAt : no surface load support
_______________________________________________________
Sorry about that, I had only pushed the code to github. It should be updated now.
Hi Mikael,
I will have a meeting with Borek on Friday 17th 2014. Please let me Know did you make any progress with Quad1MindlinShell3D in mean time. Thanks in advance and kind regards, Svemir.
I have only made one change related to this element:
There is a "drillstiffness" parameter for the cross-section, that will determine how much artificial drilling stiffness that should be added. It should be in the same order of magnitude as the shear modulus.
It is zero by default.
Pressure loads also works. It all seems fine to me.
quad1mindlin3d_drill.out
Testing
NonLinearStatic nsteps 1 nmodules 1 controlmode 1 rtolv 1.e-8 rtold 1e8
vtkxml tstep_all domain_all primvars 1 1 stype 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 9 nelem 4 ncrosssect 1 nmat 1 nbc 5 nic 0 nltf 1 nset 3
node 1 coords 3 -0.5 -0.5 0.0
node 2 coords 3 0.0 -0.5 0.0
node 3 coords 3 0.5 -0.5 0.0
node 4 coords 3 -0.5 0.0 0.0
node 5 coords 3 0.0 0.0 0.0
node 6 coords 3 0.5 0.0 0.0
node 7 coords 3 -0.5 0.5 0.0
node 8 coords 3 0.0 0.5 0.0
node 9 coords 3 0.5 0.5 0.0
Quad1MindlinShell3d 1 nodes 4 1 2 5 4 boundaryLoads 2 4 2
Quad1MindlinShell3d 2 nodes 4 2 3 6 5 boundaryLoads 2 4 2
Quad1MindlinShell3d 3 nodes 4 4 5 8 7 boundaryLoads 2 4 2
Quad1MindlinShell3d 4 nodes 4 5 6 9 8 boundaryLoads 2 4 2
SimpleCS 1 material 1 thick 0.01 drillstiffness 1e11 set 3
IsoLE 1 d 0. E 2.1E11 n 0.3 tAlpha 0.000012
BoundaryCondition 1 loadTimeFunction 1 values 6 0. 0. 0. 0 0. 0. dofs 6 1 2 3 4 5 6 set 1
NodalLoad 2 loadTimeFunction 1 Components 6 0. 0. -1.e6 0. 0. 0. set 0
ConstantEdgeLoad 3 loadTimeFunction 1 ndofs 6 loadtype 6 Components 6 0. 0. -1.e6 0. 0. 0.
ConstantPressureLoad 4 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 1.e6
# Either prescribe the drilling dofs or use a drilling stiffness
BoundaryCondition 5 loadTimeFunction 1 values 1 0. dofs 1 6 set 0
ConstantFunction 1 f(t) 1.0
Set 1 nodes 3 1 4 7
Set 2 elementBoundaries 8 1 2 2 2 3 2 4 2
Set 3 elements 4 1 2 3 4
Hi Mikael,
previous example Works fine but it is not clear for me how load Works (is defined).
For each element it is written: boundaryLoads 2 4 2
what means that there are two loads.
First one is: NodalLoad 2 loadTimeFunction 1 Components 6 0. 0. -1.e6 0. 0. 0. set 0 (what set 0 means here)
and second one is: ConstantPressureLoad 4 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1
In addition is it possible to group all elements in set having same pressure and then write something like this:
ConstantPressureLoad 4 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 set 3 (in this case all for elements are in that set)
Thanks in advance and kind regards, Svemir.
Hi Mikael,
does Quad1MindlinShell3d supports LinearStatic analysis? I tried to change it from NonLinearStatic to LinearStatic and it fails.
Thanks, Svemir.
Svemir,
boundaryLoads 2 4 2
means:
boundary number 2 has load number 4.
(boundary number 1 would only change the sign of the normal)
set 0
means:
apply this load to this set
Zero is the default value for the "set" field and it is applicable to all types of boundary conditions. You can remove it from the nodal load and it will not change anything.
Sets are still (fairly) new and not yet completely implemented. In the future, it should be possible to specify all types of loads on sets rather than specifying them after each element. For now, this doesn't work on quad1mindlinshell3d.
(this has to do with the quad1mindlinshell3d element using a 2D interpolator, which will interpret a boundary as an edge of the domain).
Implementing the proper interpolator would enable this the syntax you hint at, however, set 3 would need to be a *boundary* set, so in this case, it would look like;
Set 3 elementboundaries 8 1 2 2 2 3 2 4 2
where we specify:
element 1, boundary 2
element 2, boundary 2
element 3, boundary 2
element 4, boundary 2
( A quad shell element will end up having 6 boundaries (inside + outside + 4 sides around), so one has to specify the boundary number for any type of boundary load ).
--------
I don't see much point in running anything in LinearStatic, and I'm in favor of removing LinearStatic and renaming Nonlinearstatic to just "StructuralStatic". LinearStatic will not be any faster than Nonlinearstatic.
You're right LinearStatic isn't working (problem occurs when updating the internal state). Things become a bit messy when dealing with the drilling stiffness for shells.
It can be fixed, but until then, please stick to Nonlinearstatic since there are only advantages to using it.
This is off topic, but I am big supporter of linear static:
-linear statis supports multiple load cases (each one corresponds to time step), this is the difference compared to nonlinear static solver, where time steps cirrespond to load increments. Load cases are essential for engineering analysis, typically you have many of them.
-for our students, where many of are udergraduares,we need a simple, understendable implementation of basic linear static. The nonlinear solver is too complex for this purpose.
To avoid off topic discussion; I agree that nonlinear static is too complex, but I'd like to change that as well, and I have a pretty good idea how to. I made another thread in the dev forum.
Hi Mikae,
after Borek explained to me in more details how load/boundary conditions are applied I try to make one benchmark example and results are not good- Please check this web http://www.roymech.co.uk/Useful_Tables/ … lates.html and try to make clamped plate example comparison of theoretical results and results obtained with Quad1Mindlin3dShell element. Please post input file, thanks, Svemir.
We tested example below (100 elements, 121 nodes 40 boundary nodes clamped) which shoud give 6.58e-10 as maximum displacement but it doesn't.
#*******************************************************************************#
#*****************************BVB CAFE OOFEM EXPORT*****************************#
#**************************** VERSION 01/14/14 ****************************#
#*******************************************************************************#
#Output File Record
plate.out
#Job Description
Analyses-0NonLinear OOFEM
#Analysis Type
NonLinearStatic nsteps 1 controlmode 1 rtolv 1.e-8 rtold 1e8 nmodules 1
vtkxml tstep_all domain_all primvars 1 1 vars 1 9 stype 1
#Domain Type
domain 3dShell
#Output Manager
OutputManager tstep_all dofman_all element_all
#Components size
ndofman 121 nelem 100 ncrosssect 1 nmat 1 nbc 2 nic 0 nltf 1 nset 1
#NODES
node 1 coords 3 0 1 0
node 2 coords 3 0 0 0
node 3 coords 3 1 0 0
node 4 coords 3 1 1 0
node 5 coords 3 0 0.1 0
node 6 coords 3 0.1 0.1 0
node 7 coords 3 0.1 0 0
node 8 coords 3 0 0.2 0
node 9 coords 3 0.1 0.2 0
node 10 coords 3 0 0.3 0
node 11 coords 3 0.1 0.3 0
node 12 coords 3 0 0.4 0
node 13 coords 3 0.1 0.4 0
node 14 coords 3 0 0.5 0
node 15 coords 3 0.1 0.5 0
node 16 coords 3 0 0.6 0
node 17 coords 3 0.1 0.6 0
node 18 coords 3 0 0.7 0
node 19 coords 3 0.1 0.7 0
node 20 coords 3 0 0.8 0
node 21 coords 3 0.1 0.8 0
node 22 coords 3 0 0.9 0
node 23 coords 3 0.1 0.9 0
node 24 coords 3 0.1 1 0
node 25 coords 3 0.2 0.1 0
node 26 coords 3 0.2 0 0
node 27 coords 3 0.2 0.2 0
node 28 coords 3 0.2 0.3 0
node 29 coords 3 0.2 0.4 0
node 30 coords 3 0.2 0.5 0
node 31 coords 3 0.2 0.6 0
node 32 coords 3 0.2 0.7 0
node 33 coords 3 0.2 0.8 0
node 34 coords 3 0.2 0.9 0
node 35 coords 3 0.2 1 0
node 36 coords 3 0.3 0.1 0
node 37 coords 3 0.3 0 0
node 38 coords 3 0.3 0.2 0
node 39 coords 3 0.3 0.3 0
node 40 coords 3 0.3 0.4 0
node 41 coords 3 0.3 0.5 0
node 42 coords 3 0.3 0.6 0
node 43 coords 3 0.3 0.7 0
node 44 coords 3 0.3 0.8 0
node 45 coords 3 0.3 0.9 0
node 46 coords 3 0.3 1 0
node 47 coords 3 0.4 0.1 0
node 48 coords 3 0.4 0 0
node 49 coords 3 0.4 0.2 0
node 50 coords 3 0.4 0.3 0
node 51 coords 3 0.4 0.4 0
node 52 coords 3 0.4 0.5 0
node 53 coords 3 0.4 0.6 0
node 54 coords 3 0.4 0.7 0
node 55 coords 3 0.4 0.8 0
node 56 coords 3 0.4 0.9 0
node 57 coords 3 0.4 1 0
node 58 coords 3 0.5 0.1 0
node 59 coords 3 0.5 0 0
node 60 coords 3 0.5 0.2 0
node 61 coords 3 0.5 0.3 0
node 62 coords 3 0.5 0.4 0
node 63 coords 3 0.5 0.5 0
node 64 coords 3 0.5 0.6 0
node 65 coords 3 0.5 0.7 0
node 66 coords 3 0.5 0.8 0
node 67 coords 3 0.5 0.9 0
node 68 coords 3 0.5 1 0
node 69 coords 3 0.6 0.1 0
node 70 coords 3 0.6 0 0
node 71 coords 3 0.6 0.2 0
node 72 coords 3 0.6 0.3 0
node 73 coords 3 0.6 0.4 0
node 74 coords 3 0.6 0.5 0
node 75 coords 3 0.6 0.6 0
node 76 coords 3 0.6 0.7 0
node 77 coords 3 0.6 0.8 0
node 78 coords 3 0.6 0.9 0
node 79 coords 3 0.6 1 0
node 80 coords 3 0.7 0.1 0
node 81 coords 3 0.7 0 0
node 82 coords 3 0.7 0.2 0
node 83 coords 3 0.7 0.3 0
node 84 coords 3 0.7 0.4 0
node 85 coords 3 0.7 0.5 0
node 86 coords 3 0.7 0.6 0
node 87 coords 3 0.7 0.7 0
node 88 coords 3 0.7 0.8 0
node 89 coords 3 0.7 0.9 0
node 90 coords 3 0.7 1 0
node 91 coords 3 0.8 0.1 0
node 92 coords 3 0.8 0 0
node 93 coords 3 0.8 0.2 0
node 94 coords 3 0.8 0.3 0
node 95 coords 3 0.8 0.4 0
node 96 coords 3 0.8 0.5 0
node 97 coords 3 0.8 0.6 0
node 98 coords 3 0.8 0.7 0
node 99 coords 3 0.8 0.8 0
node 100 coords 3 0.8 0.9 0
node 101 coords 3 0.8 1 0
node 102 coords 3 0.9 0.1 0
node 103 coords 3 0.9 0 0
node 104 coords 3 0.9 0.2 0
node 105 coords 3 0.9 0.3 0
node 106 coords 3 0.9 0.4 0
node 107 coords 3 0.9 0.5 0
node 108 coords 3 0.9 0.6 0
node 109 coords 3 0.9 0.7 0
node 110 coords 3 0.9 0.8 0
node 111 coords 3 0.9 0.9 0
node 112 coords 3 0.9 1 0
node 113 coords 3 1 0.1 0
node 114 coords 3 1 0.2 0
node 115 coords 3 1 0.3 0
node 116 coords 3 1 0.4 0
node 117 coords 3 1 0.5 0
node 118 coords 3 1 0.6 0
node 119 coords 3 1 0.7 0
node 120 coords 3 1 0.8 0
node 121 coords 3 1 0.9 0
#ELEMENTS AND PROPERTIES
Quad1MindlinShell3d 1 nodes 4 2 5 6 7 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 2 nodes 4 5 8 9 6 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 3 nodes 4 8 10 11 9 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 4 nodes 4 10 12 13 11 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 5 nodes 4 12 14 15 13 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 6 nodes 4 14 16 17 15 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 7 nodes 4 16 18 19 17 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 8 nodes 4 18 20 21 19 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 9 nodes 4 20 22 23 21 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 10 nodes 4 22 1 24 23 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 11 nodes 4 7 6 25 26 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 12 nodes 4 6 9 27 25 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 13 nodes 4 9 11 28 27 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 14 nodes 4 11 13 29 28 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 15 nodes 4 13 15 30 29 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 16 nodes 4 15 17 31 30 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 17 nodes 4 17 19 32 31 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 18 nodes 4 19 21 33 32 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 19 nodes 4 21 23 34 33 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 20 nodes 4 23 24 35 34 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 21 nodes 4 26 25 36 37 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 22 nodes 4 25 27 38 36 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 23 nodes 4 27 28 39 38 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 24 nodes 4 28 29 40 39 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 25 nodes 4 29 30 41 40 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 26 nodes 4 30 31 42 41 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 27 nodes 4 31 32 43 42 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 28 nodes 4 32 33 44 43 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 29 nodes 4 33 34 45 44 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 30 nodes 4 34 35 46 45 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 31 nodes 4 37 36 47 48 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 32 nodes 4 36 38 49 47 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 33 nodes 4 38 39 50 49 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 34 nodes 4 39 40 51 50 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 35 nodes 4 40 41 52 51 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 36 nodes 4 41 42 53 52 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 37 nodes 4 42 43 54 53 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 38 nodes 4 43 44 55 54 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 39 nodes 4 44 45 56 55 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 40 nodes 4 45 46 57 56 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 41 nodes 4 48 47 58 59 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 42 nodes 4 47 49 60 58 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 43 nodes 4 49 50 61 60 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 44 nodes 4 50 51 62 61 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 45 nodes 4 51 52 63 62 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 46 nodes 4 52 53 64 63 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 47 nodes 4 53 54 65 64 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 48 nodes 4 54 55 66 65 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 49 nodes 4 55 56 67 66 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 50 nodes 4 56 57 68 67 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 51 nodes 4 59 58 69 70 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 52 nodes 4 58 60 71 69 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 53 nodes 4 60 61 72 71 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 54 nodes 4 61 62 73 72 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 55 nodes 4 62 63 74 73 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 56 nodes 4 63 64 75 74 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 57 nodes 4 64 65 76 75 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 58 nodes 4 65 66 77 76 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 59 nodes 4 66 67 78 77 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 60 nodes 4 67 68 79 78 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 61 nodes 4 70 69 80 81 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 62 nodes 4 69 71 82 80 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 63 nodes 4 71 72 83 82 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 64 nodes 4 72 73 84 83 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 65 nodes 4 73 74 85 84 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 66 nodes 4 74 75 86 85 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 67 nodes 4 75 76 87 86 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 68 nodes 4 76 77 88 87 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 69 nodes 4 77 78 89 88 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 70 nodes 4 78 79 90 89 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 71 nodes 4 81 80 91 92 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 72 nodes 4 80 82 93 91 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 73 nodes 4 82 83 94 93 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 74 nodes 4 83 84 95 94 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 75 nodes 4 84 85 96 95 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 76 nodes 4 85 86 97 96 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 77 nodes 4 86 87 98 97 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 78 nodes 4 87 88 99 98 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 79 nodes 4 88 89 100 99 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 80 nodes 4 89 90 101 100 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 81 nodes 4 92 91 102 103 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 82 nodes 4 91 93 104 102 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 83 nodes 4 93 94 105 104 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 84 nodes 4 94 95 106 105 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 85 nodes 4 95 96 107 106 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 86 nodes 4 96 97 108 107 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 87 nodes 4 97 98 109 108 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 88 nodes 4 98 99 110 109 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 89 nodes 4 99 100 111 110 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 90 nodes 4 100 101 112 111 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 91 nodes 4 103 102 113 3 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 92 nodes 4 102 104 114 113 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 93 nodes 4 104 105 115 114 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 94 nodes 4 105 106 116 115 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 95 nodes 4 106 107 117 116 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 96 nodes 4 107 108 118 117 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 97 nodes 4 108 109 119 118 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 98 nodes 4 109 110 120 119 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 99 nodes 4 110 111 121 120 mat 1 crossSect 1 boundaryLoads 2 2 1
Quad1MindlinShell3d 100 nodes 4 111 112 4 121 mat 1 crossSect 1 boundaryLoads 2 2 1
#PLATES
SimpleCS 1 material 1 thick 0.01 drillstiffness 1e11
IsoLE 1 d 0. E 2.1E11 n 0.3 tAlpha 0.000012
BoundaryCondition 1 loadTimeFunction 1 values 6 0. 0. 0. 0 0. 0. dofs 6 1 2 3 4 5 6 set 1
ConstantPressureLoad 2 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 0.01
ConstantFunction 1 f(t) 1.0
#BOUNDARY CONDITION SETS
#FIXED NODES: SET 1
Set 1 nodes 40 1 2 5 8 10 12 14 16 18 20 22 3 4 113 114 115 116 117 118 119 120 121 24 35 46 57 68 79 90 101 112 7 26 37 48 59 70 81 92 103
Hi Svemir. I have a few comments on the input file;
1. Please don't specify the material per element. With layeredcross-sections we have tried to move away from the assumption that there is only one material per element. Instead, this is determined by the cross-section. You already do specify the cross-section material, so "mat 1" will be completely unused.
2. You can actually specify cross-section with sets, so by adding a set for all elements:
Set 2 elementRanges {(1 100)}
you are able to use:
SimpleCS 1 material 1 thick 0.01 drillstiffness 1e11 set 2
3. Instead of setting rtolv and rtold, you can set "rtolf" which only checks the norm of the residual forces. Setting a tolerance to zero will actually turn it off, which means a cleaner and easier to read output from NRSolver. (rtolv sets both rtolf and rtold). This will achieve the same results as your input file:
NonLinearStatic nsteps 1 controlmode 1 rtolf 1.e-8 nmodules 1
-------------
Now, on to the results.
I looked over the thread and saw that I claimed that it was a MITC4 element, but I'd like to apoligize for being misleading. I'm not sure what I might have read that would give me that impression, but it is in fact not a MITC4 element.
It's a 4-node mindlin element, so it will exhibit shear locking when the plate it thin.
The element is better when length/thickness ~ 10-20.
For a thickness t = 0.1, i should get around 6.5777e-13, and the FE-results are 6.53e-13.
It is not a good choice for very thin plates. The higher order mindlin elements should behave better.
However, the input file is more or less the same as it would be if this was an actual MITC4 element.
Svemir,
I have just added support for a simple one point reduced shear integration for the Quad1MindlinShell3D element.
You can turn it on by adding "reducedintegration 1" to every element record, so the element records should look like this:
Quad1MindlinShell3d 1 nodes 4 2 5 6 7 mat 1 crossSect 1 boundaryLoads 2 2 1 reducedintegration 1
Quad1MindlinShell3d 2 nodes 4 5 8 9 6 mat 1 crossSect 1 boundaryLoads 2 2 1 reducedintegration 1
Quad1MindlinShell3d 3 nodes 4 8 10 11 9 mat 1 crossSect 1 boundaryLoads 2 2 1 reducedintegration 1
...
With this modification, the deflection in the plate center (node 63) gives 6.54438838e-10, so I think this is acceptable.
The modified input file is attached.
Borek
I changed the new parameter to a boolean flag so it is not confused with actually specifying the integration rule;
Quad1MindlinShell3d 1 nodes 4 2 5 6 7 boundaryLoads 2 2 1 reducedintegration
Quad1MindlinShell3d 2 nodes 4 5 8 9 6 boundaryLoads 2 2 1 reducedintegration
Quad1MindlinShell3d 3 nodes 4 8 10 11 9 boundaryLoads 2 2 1 reducedintegration
...
The book i used as a reference claimed that reduced integration was unsuitable for the element, since it introduced spurious zero modes. So results can be unreliable.
Since the we have a mix of units, it's a bit hard to check for zero eigenvalues (precision doesn't seem to be that great, even the plane stress element has a factor 1e04 between the nonzero and "zero" eigenvalues).
I made a single element stiffness matrix to test it out, and i get
FULL REDUCED
-5.0000e+06 -5.0000e+06
-4.0000e+06 -4.0000e+06
-4.0000e+06 -4.0000e+06
-1.0000e+06 -1.1971e+03
-5.4864e+03 -1.1971e+03
-5.4864e+03 -6.0000e+02
2.0000e+03 1.5580e-06 // Spurious mode
5.6062e+06 3.5224e-06 // Spurious mode
1.0521e+07 2.0000e+03
1.0521e+07 8.6538e+06
1.3438e+07 8.6538e+06
1.9068e+07 1.3461e+07
2.7778e+07 1.3461e+07
3.0606e+07 2.4999e+07
8.3330e+07 2.7778e+07
8.3330e+07 8.3330e+07
4.4926e+09 8.3330e+07
6.7478e+09 6.7468e+09
6.7478e+09 6.7468e+09
1.0380e+10 1.0380e+10
1.0380e+10 1.0380e+10
1.6149e+10 1.6149e+10
1.6149e+10 1.6149e+10
2.9995e+10 2.9995e+10
After a lot of debugging I found that the seemingly nonzero (but unrealistic and negative) eigenvalues "-5.0000e+06" comes from the simple membrane. The PlaneStress2D element gets the same results. I was expecting them to be closer to zero, but precision seems to be rather bad.
Borek, what is the order of components for the generalized strain vector for the shell material mode?
The order I wrote for the B-matrix is;
nabla = [
x 0 0 0 0
0 y 0 0 0
y x 0 0 0
0 0 0 x 0
0 0 0 0 y
0 0 0 y x
0 0 -y 0 n
0 0 -x n 0
]
eps = nabla * [D_1, D_2, D_3, R_1, R_2]
So:
eps = [
eps_11
eps_22
gamma_12
kappa_11
kappa_22
kappa_12 + kappa_21
-eps_32 + R_2
-eps_31 + R_1
]
I'm not sure about the order of the last two components (I don't know why i took that order. Should it be flipped?)
For isotropic problems this doesn't seem to matter either way.
Hi Borek, Mikael,
After all those comments it is a bit easier for me to form output from CAFE but I still have some questions which I am not capeble to understand based on manuals available. Problem is related to LoadCases (in general). If I have element like this
Quad1MindlinShell3d 1 nodes 4 2 5 6 7 mat 1 crossSect 1 reducedintegration boundaryLoads 4 2 1 3 1
where 2 and 3 are ConstantPressureLoad of 100 and 50
is it same as boundaryLoads 2 2 1
where 2 is ConstantPressureLoad of 100+50=150
Finally how multiple load cases are Applied?
Is id done through
ConstantFunction 1 f(t) 1.0
Thanks in advance, Svemir.
Hi Svemir,
( I'd like to remind you once again that removing "mat 1" is a good idea. )
Yes, loads are accumulative. The only difference is that having 2 loads will integrate them twice. It will not add them up first. So having many loads is slightly slower computationally (probably not noticeable).
Loads are scaled by the value of the time function. So
Quad1MindlinShell3d 1 nodes 4 2 5 6 7 crossSect 1 reducedintegration boundaryLoads 4 2 1 3 1
...
ConstantPressureLoad 2 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 100.
ConstantPressureLoad 2 loadTimeFunction 2 loadtype 6 ndofs 1 Components 2 50.
...
ConstantFunction 1 f(t) 2.0
ConstantFunction 1 f(t) 1.0
yields a total load of pressure=250.
So I don't quite understand your final question.
Multiple boundary loads are handled as you first wrote; boundaryLoads 4 2 1 3 1. The load time function only scales respective loads.
------------------------
You don't need to care about the following stuff for now, since it is not yet ready to be used, but for future reference:
We are currently in the process of extending the functionality of OOFEM functions, such that specifying "ConstantSomeLoad" is no longer that usefull. I think it will be a better idea to supply loads like this:
PressureLoad 1 pressure @1
...
ConstantFunction 1 f 150.0
or perhaps a more exotic case where for example the pressure varies with the depth, and the depth slowly increasing (the ship is slowly being lowered 0.5m/s)
PressureLoad 1 pressure @1
...
PythonFunction 1 f "rho=1000; g=9.82; ret = rho*g*heaviside(0.5*t - x[2]])"
(where x is the coordinate vector and t is the time)
Hi Svemir,
regarding multiple load cases, this requires linear static. The multiple load cases are not supported by nonlinear static solver.
In linear static the load cases are represented as solution steps, so i-th load case is represented as i-th time step with time i.
You simply apply several loads on elements, where each of them has diffrenet load time function. This allows you to turn on (by nonzero load time function value) or turn off (by zero value) at specific time step (=load case)
Simple example:
#linear static with two load cases (nsteps 2)
LinearStatic nsteps 2
Quad1MindlinShell3d 1 nodes 4 2 5 6 7 crossSect 1 reducedintegration boundaryLoads 6 2 1 3 1
Quad1MindlinShell3d 2 nodes 4 9 8 7 4 crossSect 1 reducedintegration boundaryLoads 6 2 1 4 1
...
# pressure load 2 (applied on both elements) will be active in both loadcases
# as its loadtime function is nonzero for both
ConstantPressureLoad 2 loadTimeFunction 1 loadtype 6 ndofs 1 Components 1 100.
# pressure load 3 (applied only on element 1) will be active only in loadcase 1
# as its loadtime function is only nonzero for time = 1
ConstantPressureLoad 3 loadTimeFunction 2 loadtype 6 ndofs 1 Components 2 50.
# pressure load 4 (applied on element 2) will be active only in loadcase 2
# as its loadtime function is only nonzero for time = 2
ConstantPressureLoad 4 loadTimeFunction 3 loadtype 6 ndofs 1 Components 2 50.
...
ConstantFunction 1 f(t) 1.0
PeakFunction 2 t 1.0 f(t) 1.0
PeakFunction 3 t 2.0 f(t) 1.0
OOFEM forum → Modules/Add-Ons → Adding new elements
Powered by PunBB, supported by Informer Technologies, Inc.
Currently installed 4 official extensions. Copyright © 2003–2009 PunBB.