26 (edited by johnnyontheweb 03-05-2016 11:03:03)

Re: End releases on beam

Dear Mikael,
I'm trying to perform an eigen analysis of the following model, built with master/slave nodes. The following model represents a simple supported column, and it is adapted from the "eigen_beam3d" in tests\sm:

eigen_beam3d_3.out
eigen vibration analysis of simple suported beam
EigenValueDynamic nroot 6 rtolv 1.e-6 nmodules 1
errorcheck
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 20 nelem 16 ncrosssect 1 nmat 1 nbc 1 nic 0 nltf 1 nset 2
node 1 coords 3 0.   0.    0.00
node 2 coords 3 0.   0.0   0.25
node 3 coords 3 0.   0.0   0.50
node 4 coords 3 0.0  0.0   0.75
node 5 coords 3 0.   0.0   1.00
node 6 coords 3 0.   0.0   1.25
node 7 coords 3 0.   0.0   1.50
node 8 coords 3 0.0  0.0   1.75
node 9 coords 3 0.   0.0   2.00
node 10 coords 3 0.   0.0   2.25
node 11 coords 3 0.   0.0   2.50
node 12 coords 3 0.0  0.0   2.75
node 13 coords 3 0.   0.0   3.00
node 14 coords 3 0.   0.0   3.25
node 15 coords 3 0.   0.0   3.50
node 16 coords 3 0.0  0.0   3.75
node 17 coords 3 0.   0.0   4.00
node 18 coords 3 1.0  0.0   0.00
node 19 coords 3 0.  0.  0.    dofidmask 6 1 2 3 4 5 6 masterMask 6 1 1 1 0 0 1 doftype 6 1 1 1 0 0 1
node 20 coords 3 0.  0.  4.00  dofidmask 6 1 2 3 4 5 6 masterMask 6 17 17 17 0 0 17 doftype 6 1 1 1 0 0 1
#
Beam3d 1 nodes 2 1 2 refNode 18
Beam3d 2 nodes 2 2 3 refNode 18
Beam3d 3 nodes 2 3 4 refNode 18
Beam3d 4 nodes 2 4 5 refNode 18
Beam3d 5 nodes 2 5 6 refNode 18
Beam3d 6 nodes 2 6 7 refNode 18
Beam3d 7 nodes 2 7 8 refNode 18
Beam3d 8 nodes 2 8 9 refNode 18
Beam3d 9 nodes 2 9 10 refNode 18
Beam3d 10 nodes 2 10 11 refNode 18
Beam3d 11 nodes 2 11 12 refNode 18
Beam3d 12 nodes 2 12 13 refNode 18
Beam3d 13 nodes 2 13 14 refNode 18
Beam3d 14 nodes 2 14 15 refNode 18
Beam3d 15 nodes 2 15 16 refNode 18
Beam3d 16 nodes 2 16 17 refNode 18
#
#
SimpleCS 1 area 0.06 Iy 0.00045 Iz 0.0002 Ik 0.000498461  material 1 set 1
IsoLE 1 d 25.0 E 25.e6 n 0.15 tAlpha 1.2e-5
BoundaryCondition  1 loadTimeFunction 1 dofs 6 1 2 3 4 5 6 values 6 0. 0. 0. 0. 0. 0. set 2
ConstantFunction 1 f(t) 1.
Set 1 elementranges {(1 16)}
Set 2 nodes 3 18 19 20
#
#
#%BEGIN_CHECK% tolerance 1.e-2
## check eigen values
#EIGVAL tStep 1 EigNum 1 value 1.28049596e+03
#EIGVAL tStep 1 EigNum 2 value 2.85378786e+03
#EIGVAL tStep 1 EigNum 3 value 2.10785640e+04
#%END_CHECK%

The sole error is related to the errorCheckingModule, but all results are "-1.#IND0", and I cannot understand what's wrong with this model.

Can you help? thanks

Re: End releases on beam

Running it with debug mode, there is a crash, so any potential solution output is completely unreliable.

edit: This might be my own fault, let me get back to this later

Re: End releases on beam

If you remove

... nmodules 1
errorcheck

there's any crash (and no errors) in Debug mode (using VS2013).

Re: End releases on beam

Tracking the error backwards, I see we end up with NAN values in the matrix itself, a block of these on the last DOFs/equations in the system matrix.

As far as I can tell, that should reflect the DOFs in Node 17 (since 18-20 are fully prescribed).
I'm not sure what's the cause yet.

Re: End releases on beam

Hi everyone,
since the master nodes should be the ones restrained, this should be the correct model:

eigen_beam3d_2.out
eigen vibration analysis of simple suported beam
EigenValueDynamic nroot 6 rtolv 1.e-6 nmodules 1
errorcheck
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 20 nelem 16 ncrosssect 1 nmat 1 nbc 1 nic 0 nltf 1 nset 2
node 1 coords 3 0.   0.    0.00 dofidmask 6 1 2 3 4 5 6 masterMask 6 19 19 19 0 0 19 doftype 6 1 1 1 0 0 1
node 2 coords 3 0.   0.0   0.25
node 3 coords 3 0.   0.0   0.50
node 4 coords 3 0.0  0.0   0.75
node 5 coords 3 0.   0.0   1.00
node 6 coords 3 0.   0.0   1.25
node 7 coords 3 0.   0.0   1.50
node 8 coords 3 0.0  0.0   1.75
node 9 coords 3 0.   0.0   2.00
node 10 coords 3 0.   0.0   2.25
node 11 coords 3 0.   0.0   2.50
node 12 coords 3 0.0  0.0   2.75
node 13 coords 3 0.   0.0   3.00
node 14 coords 3 0.   0.0   3.25
node 15 coords 3 0.   0.0   3.50
node 16 coords 3 0.0  0.0   3.75
node 17 coords 3 0.   0.0   4.00 dofidmask 6 1 2 3 4 5 6 masterMask 6 20 20 20 0 0 20 doftype 6 1 1 1 0 0 1
node 18 coords 3 1.0  0.0   0.00
node 19 coords 3 0.  0.  0.  
node 20 coords 3 0.  0.  4.00  
#
Beam3d 1 nodes 2 1 2 refNode 18
Beam3d 2 nodes 2 2 3 refNode 18
Beam3d 3 nodes 2 3 4 refNode 18
Beam3d 4 nodes 2 4 5 refNode 18
Beam3d 5 nodes 2 5 6 refNode 18
Beam3d 6 nodes 2 6 7 refNode 18
Beam3d 7 nodes 2 7 8 refNode 18
Beam3d 8 nodes 2 8 9 refNode 18
Beam3d 9 nodes 2 9 10 refNode 18
Beam3d 10 nodes 2 10 11 refNode 18
Beam3d 11 nodes 2 11 12 refNode 18
Beam3d 12 nodes 2 12 13 refNode 18
Beam3d 13 nodes 2 13 14 refNode 18
Beam3d 14 nodes 2 14 15 refNode 18
Beam3d 15 nodes 2 15 16 refNode 18
Beam3d 16 nodes 2 16 17 refNode 18
#
#
SimpleCS 1 area 0.06 Iy 0.00045 Iz 0.0002 Ik 0.000498461  material 1 set 1
IsoLE 1 d 25.0 E 25.e6 n 0.15 tAlpha 1.2e-5
BoundaryCondition  1 loadTimeFunction 1 dofs 6 1 2 3 4 5 6 values 6 0. 0. 0. 0. 0. 0. set 2
ConstantFunction 1 f(t) 1.
Set 1 elementranges {(1 16)}
Set 2 nodes 3 18 19 20
#
#
#%BEGIN_CHECK% tolerance 1.e-2
## check eigen values
#EIGVAL tStep 1 EigNum 1 value 1.28049596e+03
#EIGVAL tStep 1 EigNum 2 value 2.85378786e+03
#EIGVAL tStep 1 EigNum 3 value 2.10785640e+04
#%END_CHECK%

unfortunately also this one doesn't run. I get this message:

____________________________________________________
           OOFEM - Finite Element Solver
        Copyright (C) 1994-2014 Borek Patzak
____________________________________________________
Total number of solution steps     1
Assembling stiffness and mass matrices
_______________________________________________________
Error: (C:\Users\f.pontarin\Desktop\Repositories\oofem\src\oofemlib\dofmanager.C
:126)
In Node::oofem::DofManager::giveDofWithID, number: 19:
dof with given DofID does not exists
_______________________________________________________
No backtrace available
Total 1 error(s) and 0 warning(s) reported
oofem exit code 1

Does this happen to you too?

Re: End releases on beam

A few details to sort out,

The domain type is deprecated, and is (almost) not used.  Instead, the necessary DOFs are generated by what the connected elements need, node-per-node.

You can also specify directly what dofs nodes should contain, by specifying the "dofidmask" (you can do this for any node).

Nothing is connected to node 20 right now, so no DOFs are created there. You specify that 17 is connected to it, but there are no DOFs to connect to.

Solution would be to add "dofidmask" to node the master nodes as well (or every node, if you want, it makes no difference in this case)

But (!) what are you trying to achieve here?
Having a slave node to a prescribed node.. with no other elements connected to it, is pointless. It's the identical effect as just prescribing the slave node directly.

Re: End releases on beam

This model isn't a particular real case. It was created to test the master-slave approach instead of using "dofstocondense" starting from a working example (the one in tests/sm folder) and compare the results.
This should be a simply supported beam, with nodes 19 and 20 acting as external bearing. To achieve the flexural dof release, dofs 4 and 5 are set to 0 for nodes 1 and 17:

node 1 coords 3 0.   0.    0.00 dofidmask 6 1 2 3 4 5 6 masterMask 6 19 19 19 0 0 19 doftype 6 1 1 1 0 0 1
...
node 17 coords 3 0.   0.0   4.00 dofidmask 6 1 2 3 4 5 6 masterMask 6 20 20 20 0 0 20 doftype 6 1 1 1 0 0 1

so I thought that prescribed dof info should propagate for dofs 1 2 3 and 6 while dofs 4 and 5 should still be free.
Writing dofidmask for the nodes as you suggested does the trick so thank you! I supposed that all the dofs were implicitly given to nodes according to domain type.

Re: End releases on beam

That used to be what the domain type did, but in mixed problems (like some shell elements, some solid elements) or incompressible problems (linear pressure, quadratic velocities), XFEM, contact problems, etc. etc.  you would have different dofids in each node.

The "eigen_beam3d" file uses dofcondense in a very pointless way, which is why you needed to do unnecessary things like this. So it's not the ideal problem to translate into slave nodes.
Instead, eigen_beam3d should have just used BCs to achieve this with the existing nodes.

eigen_beam3d.out
eigen vibration analysis of simple suported beam
EigenValueDynamic nroot 4 rtolv 1.e-6 nmodules 1
errorcheck
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 18 nelem 16 ncrosssect 1 nmat 1 nbc 1 nic 0 nltf 1 nset 2
node 1 coords 3 0.   0.    0.00
node 2 coords 3 0.   0.0   0.25
node 3 coords 3 0.   0.0   0.50
node 4 coords 3 0.0  0.0   0.75
node 5 coords 3 0.   0.0   1.00
node 6 coords 3 0.   0.0   1.25
node 7 coords 3 0.   0.0   1.50
node 8 coords 3 0.0  0.0   1.75
node 9 coords 3 0.   0.0   2.00
node 10 coords 3 0.   0.0   2.25
node 11 coords 3 0.   0.0   2.50
node 12 coords 3 0.0  0.0   2.75
node 13 coords 3 0.   0.0   3.00
node 14 coords 3 0.   0.0   3.25
node 15 coords 3 0.   0.0   3.50
node 16 coords 3 0.0  0.0   3.75
node 17 coords 3 0.   0.0   4.00
node 18 coords 3 1.0  0.0   0.00
#
Beam3d 1 nodes 2 1 2 refNode 18
Beam3d 2 nodes 2 2 3 refNode 18
Beam3d 3 nodes 2 3 4 refNode 18
Beam3d 4 nodes 2 4 5 refNode 18
Beam3d 5 nodes 2 5 6 refNode 18
Beam3d 6 nodes 2 6 7 refNode 18
Beam3d 7 nodes 2 7 8 refNode 18
Beam3d 8 nodes 2 8 9 refNode 18
Beam3d 9 nodes 2 9 10 refNode 18
Beam3d 10 nodes 2 10 11 refNode 18
Beam3d 11 nodes 2 11 12 refNode 18
Beam3d 12 nodes 2 12 13 refNode 18
Beam3d 13 nodes 2 13 14 refNode 18
Beam3d 14 nodes 2 14 15 refNode 18
Beam3d 15 nodes 2 15 16 refNode 18
Beam3d 16 nodes 2 16 17 refNode 18
#
#
SimpleCS 1 area 0.06 Iy 0.00045 Iz 0.0002 Ik 0.000498461  beamShearCoeff 1.e60 material 1 set 1
IsoLE 1 d 25.0 E 25.e6 n 0.15 tAlpha 1.2e-5
BoundaryCondition 1 loadTimeFunction 1 dofs 4 1 2 3 4 values 4 0. 0. 0. 0. set 2
ConstantFunction 1 f(t) 1.
Set 1 elementranges {(1 16)}
Set 2 nodes 2 1 17
#
#
#%BEGIN_CHECK% tolerance 1.e-2
## check eigen values
#EIGVAL tStep 1 EigNum 1 value 1.28049596e+03
#EIGVAL tStep 1 EigNum 2 value 2.85378786e+03
#EIGVAL tStep 1 EigNum 3 value 2.10785640e+04
#%END_CHECK%

This is how the file should have been. It's simpler, and clearer (more direct).
You don't need dofstocondense or slave nodes in order to have momentless boundary conditions.

34

Re: End releases on beam

I just want to let know, that I have recently made a commit fixing the end-force evaluation in case when the boundary load has been applied indirectly to the beam using sets. This commit fixes only beam3d elements and has been tested on simple examples. After some more tests, I will do the same for beam2d.

Borek

Re: End releases on beam

Dea bp,
thanks for the code. Unfortunately we cannot find the file bctracker.h in the repo.

We will test it as soon as we can compile the code undeer windows (see here)

36

Re: End releases on beam

Sorry for incomplete commit. Should be OK now.

37 (edited by johnnyontheweb 25-11-2016 13:38:01)

Re: End releases on beam

Thanks bp. Now I can compile and beam3d seems to work properly, but not with dostributed loads. Consider for example this input:

beam3dsubsoil02.out
test
LinearStatic nsteps 1
domain 3dShell
OutputManager tstep_all dofman_all element_all
ndofman 4 nelem 2 ncrosssect 2 nmat 2 nbc 2 nic 0 nltf 1 nset 3
node 1 coords 3 0.  0.  0.
node 2 coords 3 1800  0.  0.
node 3 coords 3 3600 0. 0.
node 4 coords 3 3600 1.  0.
#
Beam3d 1 nodes 2 1 2 refNode 4 subsoilmat 2 mat 1
Beam3d 2 nodes 2 2 3 refNode 4 subsoilmat 2 mat 1
#
SimpleCS 1 area 80000 Iy 1066666666.6666665 Iz 266666666.66666663 Ik 160000000.0 beamShearCoeff 1.e30 material 1 set 1
SimpleCS 2 
IsoLE 1 d 1. E 2.e5 n 0.15 tAlpha 1.2e-5
winkler 2 d 0.0 c1 6 0 0 20. 0 0 0 global 1
BoundaryCondition 1 loadTimeFunction 1 dofs 4 1 2  4   6 values 4 0.  0. 0. 0. set 2
#ConstantEdgeLoad 2 loadTimeFunction 1 dofs 6 1 2 3 4 5 6 Components 6 0.0 0.0 20000000.0 0.0 0.0 0.0 loadType 3 set 3
#NodalLoad 2 loadTimeFunction 1  Components 6 0.0 0.0 1.e5 0.0 0.0 0.0 
ConstantEdgeLoad 2 loadTimeFunction 1 Components 1 -1 DOFs 1 3 set 3
PeakFunction 1 t 1.0 f(t) 1.
Set 1 elementranges {(1 2)}
Set 2 nodes 3 1 2 3
Set 3 elementranges {(1 2)}

ps.
I would be surely useful to have the same modification on beam2d, but also in triangular shells tr_shell01 (tria1platesubsoil) and mitc4shell (or quad1mindlinshell?) (quad1platesubsoil) if you can and if it is possible.

38

Re: End releases on beam

Hi, it seems that the problem is in how the edge load is applied, the corresponding set should specify element edges, not elements.

set 3 elementedges 4 1 1 2 1

I agree that beam element have only one edge, but at the moment, the edge load should be applied using "elementedges" keyword at set level only.

I will add support for beam2d as well, but in case of plate and shell elements this would be probably difficult, or impossible. The reason is that on the beam we are able to recover exact end forces from the equilibrium equations or from closed form solution, but this is not generally possible for plate and shell elements.


Borek

Re: End releases on beam

Thanks!

Just a final question on that: if I want to use shell elements as elastic foundation, can I overlap the elements tria1platesubsoil or quad1platesubsoil to the original shells?

40

Re: End releases on beam

yes, this is intended use, so to have plate/shell on elastic foundation, just let shell and foundation elements share the same nodes.
At present the foundation elements suppose that z-axis points to the earth core, so they contribute to the stiffness in the z-direction.
Also note, that these elements come with linear interpolation, so they should be combined with plates and shells with linear interpolation of vertical displacement.

41 (edited by johnnyontheweb 28-11-2016 12:37:41)

Re: End releases on beam

Thanks for the clarification.

EDIT: from official GIT repo:
git cherry-pick b9bf8b8f13713700f7e2dcfa0134defc6bec7e31

fatal: bad object b9bf8b8f13713700f7e2dcfa0134defc6bec7e31   <<<<<<<<<<<<<<<<<<<<<

is it an error from my side?

EDIT2: repo issue solved.


Going back to the beam3d, we noticed that you use Beam3d::computeNmatrixAt to get the stiffness contribution from elastic soil. Can you clarify the formulation used? We need to correct the bem module to extract the proper force diagrams alogn the beam.

In winkler material, I noticed there's no dependence on width or height of the beam. Which are the units for the parameter c1? It seems they are force/Length^2 ...

Re: End releases on beam

I believe these options are for modeling ground, i.e. the beam midline represents the earth surface.
There is really nothing you can export here, since it doesn't really have anything to do with a beam anymore.

Disclaimer: I'm not an expert on these, and i might be completely wrong.

Re: End releases on beam

In winkler material, I noticed there's no dependence on width or height of the beam. Which are the units for the parameter c1? It seems they are force/Length^2 ...

Anyway, the input parameters are not clear. Can you help on that? Winkler subsoil constant usually has force/Length^3 ...

Re: End releases on beam

I would assume the difference is due to this being 2D, since it's a beam and not a plane. Again, I really have no idea about these models.

45

Re: End releases on beam

The Winkler  model assumes that the foundation resists to lateral displacement. There is no shear stiffness of the foundation assumed, so surrounding foundation is unaffected by the deformation under the beam.
The resisting pressure p = Kw, where K is modulus of foundation [N/m^3] and w is corresponding lateral deflection. The differential dx of the beam with area dA=dx*b (b being the resisting width of the beam) acts like a linear spring with stiffness c = p*dx*b/w = K*w*dx*b/w = K*b*dx.
The force in the spring is c*w and according to the principle of virtual work the total work on the beam done by spring force on corresponding displacement w is E = 1/2 \int_0^l c*w^2 dx = 1/2 \int_0^l K*b*w^2 dx, thus after substituting the approximation for lateral displacement the stiffness matrix of the foundation is
K = \int_0^l N_w^T K*b N_w dx, where N_w is lateral displacement interpolation matrix.

The oofem on input expects the foundation stiffness multiplied by the corresponding resisting width K*b [N/m^2], representing the stiffness per length. The formulation is however extended that additional spring stiffness can be applied to arbitrary DOF on element, for example in longitudinal direction or distributed rotational spring stiffness.
Hope that it will help.

Re: End releases on beam

Hello everyone,
I'd like to ask a couple questions.
1. Is there some way to extract pressure on soil with output modules (e.g. IST_* flags for vtkxml)?
2. Using the model below (which of course is an extreme case but serves the purpose) of a uniformly loaded hinged beam laying on soil, It emerges from the output file that while beam end forces are reduced because of pressure on soil, the nodal reactions look like they're not considering this reduction and they have the same value as if no soil was considered.
Should this be fixed or is there a workaround?

load: 10 kN/m
length: 3m
end forces: 14.3kN
nodal reaction: 15.0kN

Post's attachments

testWinklerSubSoil-st.in 1.11 kb, 4 downloads since 2017-01-02 

You don't have the permssions to download the attachments of this post.

47

Re: End releases on beam

Thank you for reporting the problem.
I managed to fix the bug in reaction forces evaluation for beam3d with active subsoil.
Regarding the output of contact pressure: currently there is no support for this. However, it is relatively straightforward and I will try to add this once finding some spare time.

Re: End releases on beam

Thank you very much Borek, I'm looking forward to it.

Re: End releases on beam

Borek, thanks for your previous replies. You wrote:

Regarding the output of contact pressure: currently there is no support for this. However, it is relatively straightforward and I will try to add this once finding some spare time.

Regarding this implementation, we added the code reported here directly in out "bem" module, trying to integrate the contact pressure calculation.

We think that such modifications should be integrated directly in the beam2d/3d elements, and we are not sure about our implementation (which is only a trial, we currently obtain a constant soil pressure for a simple supported beam with subsoil, which is theoretically wrong).

Can you help on that?
many thanks in advance

Re: End releases on beam

Bump.
@bp, if it's easy, at least describe what you would do, I'll eventually try to come up with some decent code.