Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

1.
The edges are specified in pairs (element, edge), e.g.

elementedges  length_of_array   element_number#1 local_edge_number#1   element_number#2 local_edge_number#2 ...  element_number#n local_edge_number#n

The length of arrays in input files (regardless of what they contain) is specified by the first value (which would be 2*number_of_edges for edge sets).

There is only 1 edge on the beams, and that is the midline edge. A quad shell element would have at least (and probably at most) 4 edges, which are the midplane edges. Solid elements have the edge numbering as specified in the element manual figures.

It's a bit silly to specify all the local_edge = 1, e.g.
Set 1 elementedges 20 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1
but I really need this for consistency of the b.c.s (the loop will look for the edges in the set without knowing what type of element it is applied to).
We could definitely try to think of a nicer way to specify the input files, but in most cases, these are automatically generated, so it's not much of a concern, and I'm a bit reluctant to make specialized inputs just for beams (but I'm open to suggestions).

You are right about the missing documentation. The reason is that this is still quite new, with relatively little use cases, so all the kinks have not been worked out yet. It's very nice to have users test it out, and I appreciate the feedback and comments from you.



2.
I never did and thourough tests, so it's quite possible that I've messed up in the actual computations here. I'll have a look

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

I found a bug i introduced in the dofs-specified loads (forgot to clear a variable).

Results seem reasonble now (though I haven't checked the magnitudes).

(and the changes are pushed to both github and oofem.org)

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Thanks Mikael. I did some tests and unfortunately there is still something wrong:

1. at node 1 there should be Vz=L*p=25e6 N (actually there is half of that), where L=2500mm and p=-10000 N/mm, and Myy=p*(L^2)/2=-3.125e10 Nmm (actually, Myy=0 and Mzz is not null at the free end). See attached diagrams.

2. is it possible to have the frame forces inside the beam (eg., in a "station" in the middle) or OOFEM would give only the forces at nodes? I'm looking how to modify the code; the alternative is mesh each beam in several parts.

Giovanni

Post's attachments

frameDiagrams.zip 21.46 kb, 4 downloads since 2015-06-17 

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

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

1.
I'll check it out later (I only looked at the reaction forces before)

2.
You can get moments/forces at any Gauss-point. I don't know why beam3d doesn't export this into the output file (it would be simple, and most elements do this). Perhaps there is no great reason behind it, and we should just change that (beam3d has been around quite some time)
We can't really export moment diagrams like those (since we don't assume the material response to be necessarily linear). You could perhaps smear out the gauss-point values to the nodes, but that would be even harder to interpret due to the averaging in nodes in a global c.s.

The best option is to have 3-5 Gauss points and just export that; however, VTK doesn't really have a way to deal with integration point values, so we have to average them to 1 moment / 1 force per element. Not great.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

2. the diagrams are obtained with NextFEM Designer that reads the OUT file, not from VTK file. I'll try with the Gauss points: if I understood well, the GP output is only available in VTKXML format? or it can be obtained from the usual output manager?

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

The beam3d element just chooses not to export those values to the output manager It's trivial to add them

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

I see that beam3d has 3 GPs, and they'd be enough for my purposes.
Where do I get the forces? I suppose there would be something  like:

    for (GaussPoint *gp : *this->giveDefaultIntegrationRulePtr()) {
        fprintf(File, "\n  Gauss points forces  at  ", gp->giveNaturalCoordinates(), " ");
        for (auto &val : gp->giveIntegrationRule. ... ) {
            fprintf(File, " %.4e", val);
        }

in Beam3d :: printOutputAt(FILE *File, TimeStep *tStep), right?

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Something like that, yes, but there are more convenient functions that should be used:

    for ( auto &iRule: integrationRulesArray ) {
        iRule->printOutputAt(file, tStep);
    }

in printOutputAt

I have pushed those changes to github and oofem.org now.  haven't found the problem with the incorrect force load though.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Thanks again.
Now I see, we have only stresses and strains. It could be convenient to have the "intermediate" frame forces at GPs. There is any way to easily calculate them? Something like giveForceVectorAt(GaussPoint), I found that some code is available on giveInternalForcesVector, that for now gives only the SUM for all the GPs.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

They are called stresses and strains, but the content is the generalized stresses (force and moment for beams)

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

I know there are still the other errors related to the load vector, but actually I get the shear value at each GP (-3.7510e+007) different from the one at the end:

beam element 1 :
  local displacements  0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 -5.2083e+002 0.0000e+000 0.0000e+000 0.0000e+000 -2.7778e-001
  local end forces     0.0000e+000 1.2500e+007 0.0000e+000 0.0000e+000 0.0000e+000 2.6042e+010 0.0000e+000 -1.2500e+007 0.0000e+000 0.0000e+000 0.0000e+000 5.2083e+009
  GP  1.1  :  strains  0.0000e+000 -2.1672e-020 0.0000e+000 0.0000e+000 0.0000e+000 -2.4021e-004
              stresses 0.0000e+000 -3.7510e+007 0.0000e+000 0.0000e+000 0.0000e+000 -2.2520e+010
  GP  1.2  :  strains  0.0000e+000 -2.1672e-020 0.0000e+000 0.0000e+000 0.0000e+000 -1.1111e-004
              stresses 0.0000e+000 -3.7510e+007 0.0000e+000 0.0000e+000 0.0000e+000 -1.0417e+010
  GP  1.3  :  strains  0.0000e+000 -2.1672e-020 0.0000e+000 0.0000e+000 0.0000e+000 1.7988e-005
              stresses 0.0000e+000 -3.7510e+007 0.0000e+000 0.0000e+000 0.0000e+000 1.6864e+009

while it must have a value that (in the correct case) drops linearly to zero, or (in the actual case, with the error in the distributed load) must have the same value as in both end (1.2500e+007). Am I wrong?

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

The components are [N_x, T_z, T_y, R_x, R_y, R_z] for the "stresses" and [eps_x, gamma_xz, gamma_xy, dphi_x/dx, kappa_y, kappa_z] for the "strains".

I don't know much about this element (i'm not even sure what beam formulation it is), so what I answer for are just the general things. The reaction forces (reported independant of element types) has precisely the expected values (2.5e7 vertical force, and -3.125e10 reaction moment).
This indicates that the assembled external forces are correct.
Just doing some simple analytical work, the EB-beam tip deflection for this load case would be: p = q* L^4 / (8 * EI) = -520.83.
So the resulting node forces, and node displacement seems to be all correct.


The problems to investigate is why the the values reported by printOutputAt is so confusing.  "local end forces" does definitely seem strange.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Ok, so the end forces of the beam isn't giving such useful values here, due to the external forces being applied with a set.
In this new way to apply b.c.s, the elements doesn't keep track of their list of loads (which is a good thing, we map loads -> set -> elements, as opposed to the elements->loads)

This means that instead of outputting the end forces, the beam just exports the internal forces.
The element reports "1.2500e+007" in the fixed end, and "-1.2500e+007" in the free end. Add the contribution (2 * 1.2500e+007) of the load, and you'd end up with the expeted 2.5e+7 and 0 respectively.


I can't think of a good way to deal with this. Beams are very much the exception here, as no other element does this AFAIK (and only 1D elements can do this, so beams and bars only)

In short, I think the load is correctly computed, and it all seems to be correct (only it's the internal forces, and not the node forces you get in the output file).

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

The only way to plot beam diagrams is to have the external forces at both ends and inside the elements, at GPs location.
From my point of you (and I hope also for you, I cannot immagine in what else an OOFEM user can be interested as beam output...) the internal forces are unuseful, because they are independent from the static scheme considered.

Moreover, in the actual code, you got different results with different load types:
1. with nodal loads, the end forces reported are correct, and you can plot the diagrams as well. However, the GPs values are unuseful. See the results below with the same cantilever beam with a nodal load on the free end only:

Element output:
---------------
beam element 1 :
  local displacements  0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 -1.6667e+000 -7.7160e-001 0.0000e+000 4.6296e-004 -1.0000e-003
  local end forces     0.0000e+000 3.0000e+004 5.0000e+003 0.0000e+000 -1.2500e+007 7.5000e+007 0.0000e+000 -3.0000e+004 -5.0000e+003 0.0000e+000 9.7789e-009 1.9558e-008
  GP  1.1  :  strains  0.0000e+000 -6.9354e-023 -1.1552e-023 0.0000e+000 3.2863e-007 -7.0984e-007
              stresses 0.0000e+000 -1.2004e+005 -1.9994e+004 0.0000e+000 1.1091e+007 -6.6547e+007
  GP  1.2  :  strains  0.0000e+000 -6.9354e-023 -1.1552e-023 0.0000e+000 1.8519e-007 -4.0000e-007
              stresses 0.0000e+000 -1.2004e+005 -1.9994e+004 0.0000e+000 6.2500e+006 -3.7500e+007
  GP  1.3  :  strains  0.0000e+000 -6.9354e-023 -1.1552e-023 0.0000e+000 4.1741e-008 -9.0161e-008
              stresses 0.0000e+000 -1.2004e+005 -1.9994e+004 0.0000e+000 1.4088e+006 -8.4526e+006

2. with distributed loads, I espect the beam to behave in the same way, and not printing the internal forces.

Finally, I know that Borek wrote the software "edubeam" which plots the beam diagrams, maybe he can give a hand here telling us how he recovered the diagrams for each beam (and eventually for each internal "stations").

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

A few points here:
1.
edubeam is just specialized for beam elements, and we have to try to keep OOFEM more general. Adding very specialized conditions for beam elements complicates other things. For example, the "local end forces" output. This requires the old way of applying b.c.s, because the element needs to know what loads are applied. The new way of applying loads (using sets) has huge advantages when it comes to things like adaptivity etc., but it means that the beam no longer keeps tracks of loads, and instead of getting "local end forces = internal forces - external load", you only get "local end forces = internal forces - 0". This is not intentional or desirable, but I don't see a nice way to fix that, because I like the advantages of using sets. I'd rather just output the displacements for the beam.
Nodal loads are not distributed over the element, so these are not part of the external loads on the element.
All this behavior is completely expected.

2.
Why do we want the end forces? Well the Euler-Bernoulli type beam kinematics doesn't satisfy the equilibrium, so we "cheat" and post-process the shear stresses from solving the simple 1D equilibrium.
This is because we don't get the relevant values from the GPs (which are the values that come from the beam kinematics, not equilibrium). They aren't really incorrect.
Now, this post-processing is only possible for beams, and only beams. For a shell, you'd have no option.

3.
Integrating loads in 1D is very simple, so a post-processing tool could technically still use the internal forces for a beam, and just add the external forces. It's more work for the post-processer, but doable. I would bet this is basically how edubeam does it.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Thanks for the reply, let me return.

1. yes, I agree that OOFEM must be more general, but things like those are the pratical reason why the engineers would not use OOFEM (or other open source solver) instead of, let's say, SAP2000 for designing.
I think (and that's the only important thing I want to add to the discussion on this point) that there cannot be 2 ways of reading beams results, depending if I use sets or not for the loading.

2. in a shell element I would preferably have the element forces (per unit length) at nodes rather than strains and stresses, because this is the most valuable parameter in elastic analysis for designing. In reasearch, I agree with you that, due to the presence of inelastic solutions, these are not desiderable.

3. in the post-processing you will need to distinguish between the beam moment for nodal loads (linear) and the one from distributed (non linear), so you definitely need "stations" inside the beam element (no other types of elements need it) to do that, it's not only a matter of end forces. Anyway, I'll try to write some code and let you know.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

So, I've stopped and thought through these issues a bit more carefully now.

1.
I agree with the last part there, there shouldn't be two ways, but the direction I'm in favor off is to remove the  this problem would be to get rid of loads not applied via sets. The end forces are not as useful as one might think (see below)

2.
What I was trying to say was that the post-processing equilibrium is only ever possible in 1D specimens, i.e. beams (and bars).
You can't post-process using equilibrium for shells, because it won't be statically determined.
The forces per unit length can't be obtained (if they were, they would be associated with a an edge, not a node).
This has nothing to do with nonlinear/inelastic solutions, it's just impossible.
For shells/plates, the GP values are the only option.


3.
I'm not sure why you would classify them as linear and nonlinear.
There is no distinguishing needed in the post-processing of beam results. Just take the distributed loads (if any) and integrate those along the element (applying the internal forces at each end).
I would imagine that all FE-software that shows force-moment diagrams for beams are doing precisely this in their visualizers.
If you get the internal forces for the beam, you can just add the distributed load on top of that (gradually integrating over the beam) to obtain the diagrams.
In fact, the old "local end forces" did not give you enough information, because you don't know the shape of the load.
You could also use the moment from the GP-data, and use that to post-process the shear force (which is your only option for shells).

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

I'll take some time to study the problems listed in the earlier posts, however it will be difficult to study a solution for shear and moment with the the errors reported here.
Can you provide the original formulation of the beam or a reference to it?

ps. in the case of axial distributed load assigned via sets, there's all as expected and I can read the internal stress as is in the Gauss points.

beam element 1 :
  local displacements  0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 2.7778e-006 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
  local end forces     -5.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 5.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
  GP  1.1  :  strains  1.1111e-009 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
              stresses 5.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
  GP  1.2  :  strains  1.1111e-009 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
              stresses 5.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
  GP  1.3  :  strains  1.1111e-009 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000
              stresses 5.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

I have made some changes in the B-matrix, so that problem *might* be fixed.
I can't provide an original formulation, because this element dates back to the initial import from Borek (back in 2007), making it at least that old, so at least 3 years before i even started using OOFEM myself.
From what i can tell, it's like an Euler-Bernoulli beam with some shear correction terms (which are there to soften the beam behavior slightly, not to give accurate shear force values).


Yes, axial loads (which is just a bar) is just 1D equilibrium with no kinematic assumptions. The GP values are then just the equilibrium values.
It's just the shear force for beams that you cannot obtain through GPs.
The small deformation beam/shell elements are always just superimposed bar+transverse deformation+torsional axis  & membrane+plate respectively.
The moment should be good in the GPs as well. It's just that one cannot yet the shear forces directly.

Whether one does the post-processing to obtain shear forces inside OOFEM or not remains a question. Doing it with the standard printOutput functionality is quite limiting by its design.
There are several other export modules, and more could be added (like a specialized beam export module).
This is the only (somewhat clean) way to do it.

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Thanks Mikael for your help.
I'll take some time to check in-deep; however from a first run it seems that, in the case of the cantilever beam with uniform loading, the moment is still not zero in the free end.

I seems the Borek's example in the other (parallel) discussion is right, cannot understand for now the difference.

It is a good idea of adding a specialised beam export module, I agree on that and try to give a hand.

46

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

Hi,

the problem is now solved and fix is submitted to the repo (http://oofem.org/gitweb/?p=oofem.git;a= … 8e8e155e80)
Borek

Re: Help me! Beam3d with ConstantEdgeLoad ! All result is zero!

thanks!