Topic: Material plasticity for 2dBeam with LayeredCrossSection

I'm developing the forming problem with help of OOFEM. The contact interaction that I need for the calculation, is ready by now and it's time to move towards implementation of plasticity for 2dBeam.

I know that 2dBeam can handle plasticity with help of LayeredCrossSection, however only a few materials support it. So far isotropic hardening and von Mises yield function were able to handle correctly behavior during the forming process.

Can you give me a hint in what direction should I go and what material is better take as a base? The final aim is isotropic hardening with von Mises yield function and linear-type input for strain-hardening curve. What functions should I rewrite to be able to implement abovementioned features?

Thank you in advance for your help.

Vitalii

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Vitalii

It's unfortunate that material models don't support all the material modes. I have argued that we should change it so that all modes are supported by using the 3D-mode implementations, see an old thread here http://www.oofem.org/forum/viewtopic.php?id=1394 for more discussions on this.

If a material model only implements the 3D code, then it can be used for all the material modes (including layered cross-section).
So if you need to implement your own material model, just implement 3D support.


If you have the version from git, then you should be able to find the example file  src/sm/Materials/tutorialmaterial.C, which Jim put together to illustrate how to write material models for our PhD students.
It's an isotropic model with von Mises yield surface and constant hardening, and it should work with layeredcrosssection without modification.
It's also very simple, so that you can modify it to your liking.

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

Hi Vitalii

It's unfortunate that material models don't support all the material modes. I have argued that we should change it so that all modes are supported by using the 3D-mode implementations, see an old thread here http://www.oofem.org/forum/viewtopic.php?id=1394 for more discussions on this.

If a material model only implements the 3D code, then it can be used for all the material modes (including layered cross-section).
So if you need to implement your own material model, just implement 3D support.


If you have the version from git, then you should be able to find the example file  src/sm/Materials/tutorialmaterial.C, which Jim put together to illustrate how to write material models for our PhD students.
It's an isotropic model with von Mises yield surface and constant hardening, and it should work with layeredcrosssection without modification.
It's also very simple, so that you can modify it to your liking.

Hi Mikael.

Thank you.

Based on tutorialmaterial I've added my own material to the project. However, I cannot achieve plastic behaviour. J2 = this->computeJ2InvariantOf(devTrialStress) in TutorialMaterial :: give3dMaterialStiffnessMatrix always equals to 0, no matter what deformation I have in a beam. I'll try to solve the problem next week.

Since one of your colleague made this tutorialmaterial for students, do you have any manuals for new material developing?

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Vitalii

No, we haven't. OOFEM changes over time, and keeping manuals up to date is time consuming (and there haven't been enough new developers to validate spending time on manuals). The code we can ensure always compile, and is due to that always up to date.
I think the TutorialMaterial illustrates every component a material routine should implement. It could use some more comments to explain, but most components are quite self explanatory.


You shouldn't look at the tangents returned by give3dMaterialStiffnessMatrix.
Instead, look at the TutorialMaterial::giveRealStressVector_3d method, and possibly StructuralMaterial::giveRealStressVector_2dBeamLayer (which calls the 3D code iteratively to achieve 2d beam layer material state.

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

Hi Vitalii

No, we haven't. OOFEM changes over time, and keeping manuals up to date is time consuming (and there haven't been enough new developers to validate spending time on manuals). The code we can ensure always compile, and is due to that always up to date.
I think the TutorialMaterial illustrates every component a material routine should implement. It could use some more comments to explain, but most components are quite self explanatory.


You shouldn't look at the tangents returned by give3dMaterialStiffnessMatrix.
Instead, look at the TutorialMaterial::giveRealStressVector_3d method, and possibly StructuralMaterial::giveRealStressVector_2dBeamLayer (which calls the 3D code iteratively to achieve 2d beam layer material state.

Hi Mikael,

I do have some questions and comments regarding the abovementioned discussion.

1. Work with 2dBeamLayer and TutorialMaterial required LIBeam2D elements, not just Beam2D elements. It's not a big deal, but it worth to mention.

2. If one doesn't implement giveRealStressVector_2dBeamLayer in TutorialMaterial. The calculation gives only elastic part of deformation. So it goes to LinearElasticMaterial::giveRealStressVector_3d.

3. So, it's necessary to implement giveRealStressVector_2dBeamLayer in TutorialMaterial.

4. Since, in TutorialMaterial implemented only TutorialMaterial::giveRealStressVector_3d and if you call it from LayeredCrossSection::giveGeneralizedStress_Beam2D it doesn't apparently work due to mismatching of the StrainVector (two components) and StiffnessMatrix (6x6 tensor from give3dMaterialStiffnessMatrix).

4.1. So we can change StiffnessMatrix dimensions by calling give2dBeamLayerStiffMtrx. However, then we will have to redefine all calculation routines such as TutorialMaterial::computeSphDevPartOf, TutorialMaterial::computeJ2InvariantOf etc.

4.2. Or we can resize StrainVector from {1, 5} for 2dBeamLayer to {1, 0, 0, 0, 5, 0} for general case and work further with native TutorialMaterial functions.

What is the best approach 4.1 or 4.2? Probably, this problem has been solved and I just overlooked the correct solution.

Regards,

Vitalii

Re: Material plasticity for 2dBeam with LayeredCrossSection

2.
I see now that it is because TutorialMaterial inherits from the elastic material (which overloads all the material modes for performance).
This is the issue. It should inherit from the base StructuralMaterial class

3.
No, it would iterate for 2dBeamLayer in the StructuralMaterial implementation.

4.
The size doesn't match, but more importantly, the theory doesn't match.
Just resizing would be incorrect, as it should be the stress components that are zero for the beam layer, not the strain.

To directly implement 2dBeamLayer would be like implementing plane stress directly. You would have to go back and re-derive all the equations under this assumption. I don't think anyone is going to do that for complex material models. The iterative approach in StructuralMaterial :: giveRealStressVector_StressControl  is really about the only feasible option.



I have fixed the inheritance now so that it the iterative methods in StructuralMaterial is utilized. This code is available on www.github.com/Micket/oofem/  (very soon)

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

2.
I see now that it is because TutorialMaterial inherits from the elastic material (which overloads all the material modes for performance).
This is the issue. It should inherit from the base StructuralMaterial class

3.
No, it would iterate for 2dBeamLayer in the StructuralMaterial implementation.

4.
The size doesn't match, but more importantly, the theory doesn't match.
Just resizing would be incorrect, as it should be the stress components that are zero for the beam layer, not the strain.

To directly implement 2dBeamLayer would be like implementing plane stress directly. You would have to go back and re-derive all the equations under this assumption. I don't think anyone is going to do that for complex material models. The iterative approach in StructuralMaterial :: giveRealStressVector_StressControl  is really about the only feasible option.



I have fixed the inheritance now so that it the iterative methods in StructuralMaterial is utilized. This code is available on www.github.com/Micket/oofem/  (very soon)

Thanks, Mikael it works well, but I believe that's something is missing in status description of 2dBeamLayer.

StructuralMaterialStatus constructor gives sizes to strainVector and stressVector according to gp->giveMaterialMode(). And both of these arrays have size of 2, with Voigt vector strainControl(1, 5).

However, when we are working with giveRealStressVector_StressControl. The initial guess array vE has two elements according to status->giveStrainVector(), but strainControl indexes are 1 and 5. So, the application crushes at this point.

And then if I jump over the initial guess strain initialization and go to TutorialMaterial::giveRealStressVector_3d. There are constant problems due to mismatching of vectors that are given from Status (size 2) and calculated stiffness parameters (size 6x6).

Shall I manually change strainVector every time I call it from [s1, s2] to [s1, 0, 0, 0, 0, s2, 0]. Or there is more elegant solution?

Regards,

Vitalii

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Vitalii.

It's very possible that there is something missing. There is very little testing on this functionality yet.
I have been in favor of remaking some components of the material models to always store 3D state (right now, many material models write incorrect information when exporting, just adding zeros to the out-of-plane strain components even when it's supposed to be plane stress).
In fact, I think gp->giveMaterialMode() should be removed.


So, in each of the beam layer gauss points, the intention here is that it would store the 6 components.

Re: Material plasticity for 2dBeam with LayeredCrossSection

I just pushed what I think should fix all the issues (at least those mentioned so far).

If there are more problems, please attach an example input file where the error occurs.

10 (edited by Vitalii.Vorkov 05-03-2015 12:20:09)

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

I just pushed what I think should fix all the issues (at least those mentioned so far).

If there are more problems, please attach an example input file where the error occurs.

Hi Mikael,

You can find an input file in the attachment. The issue remains the same. Most probably it's due to mismatching of status->giveStrainVector() (size 2) and stiffness variables (size 6).

I've changed the Constructor of TutorialMaterialStatus to

TutorialMaterialStatus :: TutorialMaterialStatus(int n, Domain * d, GaussPoint * g) :
StructuralMaterialStatus(n, d, g)
{
    this->tempPlasticStrain.clear();
    this->plasticStrain.clear();

    this->tempKappa = 0.0;
    this->kappa= 0.0;
    
    tempDevTrialStress.resize(6);
    tempDevTrialStress.zero();

//
// Changing the strainVector and stressVector sizes....
    this->strainVector.resize(6);
    strainVector.zero();

    this->stressVector.resize(6);
    stressVector.zero();
}

However, then I got a problem in reducedvS.besubArrayOf(vS, stressControl) of
StructuralMaterial::giveRealStressVector_StressControl. So far, I do not completely understand the stressControl and strainContol logic, but as you mentioned here http://www.oofem.org/forum/viewtopic.php?id=1394 it could be very handy to have all vectors from the beginning in 3d form.

Post's attachments

beam02.in 4.35 kb, 6 downloads since 2015-03-05 

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

Re: Material plasticity for 2dBeam with LayeredCrossSection

Stress control just iterates until zero stresses are obtained for the components sought for. (if s_11  =  0 is the control, then it iterates over e_11 until s_11 = 0 is fullfilled).

I see that there is a bug in the code right now. There were a few other mistakes in the stress control code as well.
There is also the problem of comparing the residual off the stress control iterations. Right now, there is a fixed value, but this value has a unit (which depend on the material model parameters).

Trying to compare the controlled stresses against the reaction stresses could work, but in many cases, there would be a very small strain increment (and therefore a very small reaction stress to compare with) so that one hits the machine precision limit.


I've pushed the fixed to github now, and the file works (though I haven't checked if the results are actually correct).

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

Stress control just iterates until zero stresses are obtained for the components sought for. (if s_11  =  0 is the control, then it iterates over e_11 until s_11 = 0 is fullfilled).

I see that there is a bug in the code right now. There were a few other mistakes in the stress control code as well.
There is also the problem of comparing the residual off the stress control iterations. Right now, there is a fixed value, but this value has a unit (which depend on the material model parameters).

Trying to compare the controlled stresses against the reaction stresses could work, but in many cases, there would be a very small strain increment (and therefore a very small reaction stress to compare with) so that one hits the machine precision limit.


I've pushed the fixed to github now, and the file works (though I haven't checked if the results are actually correct).

Thanks, Mikael. It works like magic now, I've done some preliminary tests and it seems to work quite accurate, but for only small deformations. If the force is big enough the solution doesn't converge or gives nonsense results. Example of input file is in the attachment, the same as previous but with bigger force.

I can find description of nonlinearstatic in Input manual, but not a lot about StaticStructural. Can you recommend the solution parameters for my problem?

It seems for me that solution is possible since even for Steel1 material there are some example of calculations with rather big deformations. http://www.oofem.org/wiki/doku.php?id=g … eambending or http://www.oofem.org/wiki/doku.php?id=g … plasticity .

Thanks you in advance for recommendations.

Vitalii

Post's attachments

beam02.in 4.37 kb, 2 downloads since 2015-03-06 

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

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Vitalii

The beam model is only valid for small strain theories. Your example file uses "bendingmaterial" and I don't have that. I switched it to tutorialmaterial, and it does converge (though, just barely).

StaticStructural doesn't have very many parameters, and it's quite new (and now fully documented yet, sorry).
There is the "solvertype" and "initialguess" parameters to consider when there are convergence problems.
Setting "initialguess 1" should be good in almost all situations.


Using tutorialmaterial in this model, I obtain reasonable values until time step 5 arrives. I'm currently investigating what goes wrong. It seems there is a bug in the static structural solver (for obtaining the initial guess for each iteration). Might be some other bugs as well, I'll see what I can do.

Re: Material plasticity for 2dBeam with LayeredCrossSection

I see now the error,
You had put H = 0.4 in the input file. This means H = 0.4 Pa, not H = 0.4*E.

You have basically perfect plastic material, and it's reaching it's limit, thus the huge displacement when doing load control.

I made a small test, and with these adjusted input values, the beam behaves as expected.

Post's attachments

small_beam02.in 1.16 kb, 4 downloads since 2015-03-06 

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

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

I see now the error,
You had put H = 0.4 in the input file. This means H = 0.4 Pa, not H = 0.4*E.

You have basically perfect plastic material, and it's reaching it's limit, thus the huge displacement when doing load control.

I made a small test, and with these adjusted input values, the beam behaves as expected.

Thanks for the help. I did use your suggestion and apparently it does work. I'm still working on my solution, I hope to deliver soon a bit more sophisticated material model to OOFEM.

I just want to report a small mistake in TutorialMaterial which costed me a couple of weeks.

void TutorialMaterial :: giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &totalStrain, TimeStep *tStep)
{
.....
    // evaluate the yield surface
    double kappa = status->giveKappa();
    //Below the wrong line
    //double phiTrial = effectiveTrialStress - ( this->sig0 + kappa );
    // This is the correct line
    double phiTrial = effectiveTrialStress - (this->sig0 + H * kappa);
.....

}

For more information, you can see here http://www.dynasupport.com/tutorial/com … ial-return

Cheers,

Vitalii

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Vitalii.

That isn't correct, it should be

    double phiTrial = effectiveTrialStress - ( this->sig0 + kappa );

since kappa = H * k   (where k = deps^p in the notation ls dyna used).
See the line

        kappa += H*mu;

(I can't guarantee the correctness of any models, and there could be other bugs, but I don't think this is an error).

17 (edited by Vitalii.Vorkov 08-05-2015 16:01:12)

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

Hi Vitalii.

That isn't correct, it should be

    double phiTrial = effectiveTrialStress - ( this->sig0 + kappa );

since kappa = H * k   (where k = deps^p in the notation ls dyna used).
See the line

        kappa += H*mu;

(I can't guarantee the correctness of any models, and there could be other bugs, but I don't think this is an error).

Hi Mikael,

Oh, I see now my mistake, sorry for that. Indeed you're right.

I have another question regarding convergence and displacement as a driven parameter.

Now I can obtain the solution for the some amount of force, but than there is no solution. I tried to decrease solution step, but it didn't help a lot. In the attached file there is an example, the force limit is about 550N, if force is 600N I have problems. Can you give some hints or direction what should I rewrite/change in order to obtain solution for "big" force values?

Another question, is somehow related with convergence also. I tried to drive the solution with displacement. I tried to implement it with boundarycondition 5 in the attached file. Again, I can solve it only for very limited displacement? Do you have an idea why it is so?

Thanks in advance for your help.

Post's attachments

test_different_forces.in 4.85 kb, 6 downloads since 2015-05-08 

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

Re: Material plasticity for 2dBeam with LayeredCrossSection

I've looked at the file, and I see no mistake in the innput. I'm not very familiar with the beam formulation in this libeam element.

The residual seems to stagnate. It could be a fault material tangent, element tangent, och just inherit nonlinearity of the problem.
A bit of testing reveals that with very small increments, you can obtain convergence, though the steps have to be very small.

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi again Vitalii

I discovered I was compiling one version of OOFEM, and testing with another version, which is why I couldn't find the problem!

Now, there are 3 components to this

1. There needs to be a better initial guess. The problem is quite strongly nonlinear and if one studies the values in the residual, one will see components that flip-flop in sign each iteration.

2. There was a bug in StaticStructural (very very recently fixed, which I forgot to mention) which determines the initial guess. Most likely, the version you have starts with initial guess 0 each time step, which is very bad.

3. You need to have an improved initial guess. The linear increment guess is a good fit for this problem, and it can be used by specifying "initialguess 1". We should probably change this to the default in the future, since it's almost always a good idea.
This requires that the 2. has been fixed.


Edit: The latest version from www.github.com/Micket/oofem should work.

20 (edited by Vitalii.Vorkov 23-05-2015 00:41:54)

Re: Material plasticity for 2dBeam with LayeredCrossSection

Mikael Öhman wrote:

Hi again Vitalii

I discovered I was compiling one version of OOFEM, and testing with another version, which is why I couldn't find the problem!

Now, there are 3 components to this

1. There needs to be a better initial guess. The problem is quite strongly nonlinear and if one studies the values in the residual, one will see components that flip-flop in sign each iteration.

2. There was a bug in StaticStructural (very very recently fixed, which I forgot to mention) which determines the initial guess. Most likely, the version you have starts with initial guess 0 each time step, which is very bad.

3. You need to have an improved initial guess. The linear increment guess is a good fit for this problem, and it can be used by specifying "initialguess 1". We should probably change this to the default in the future, since it's almost always a good idea.
This requires that the 2. has been fixed.


Edit: The latest version from www.github.com/Micket/oofem should work.

Thanks, Mikael. As usually, it works like a magic. Now it does converge with any value of load during the loading process. However, the unloading process has became an issue.

Thus, if I use initialguess = 0, the solution with unloading converges, but for the limited amount of force.
If I use initalguess = 1, the solution doesn't work with the unloading, but work with any force value. You can find an example in the attachment.

Do you have an idea about it? My idea is to change the initialguess after the loading to 0, but I'm sure there is more elegant solution.

Another question is about the calculation process organization. Currently I have nsteps = 20, so I have 20 solutions for the different load values. I calculate now the springback (unloading) only for the last step.

I would like to calculate the unloading for every step. There is an option in creating 20 different EngngModels in advance and then do cycle of calculation.

However, I don't know my loading scheme beforehand. I do believe that I should do the work within EngngModel::SolveYourself() -> "//loop over the time steps" with treating each time step my EngngModel.

Can you give your opinion about this issue?

Thanks in advance for your help.

Vitalii

Post's attachments

loading_unloading.in 5.06 kb, 6 downloads since 2015-05-23 

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

Re: Material plasticity for 2dBeam with LayeredCrossSection

About the convergence problems:
initialguess will only matter if you prescribe unknowns (it basically smears out the change in Dirichlet b.c.s over the entire domain). You claim that initialguess makes a difference when you change the force magnitude, and that I cannot explain, nor can I repeat the simulations.
Are you sure you are not mixing up the results from simulations where you make use of "boundarycondition 5" ? Here, initialguess makes a difference. I cannot get unloading to work at all (initialguess=0 and initialguess=1 does not matter).

Two possibilities:
1. Another bug somewhere (if there is, I would guess in the layered cross-section code).
2. It is simply a very nonlinear problem and the standard Newton-Raphson solver is no good (which is common).
I tried using a modified NR by forcing the elastic tangent, and using linesearch, but neither helped.
From the output

NRSolver: 98     D_u: *1.297e-11  D_w:  4.277e-02  R_v:  3.154e-02
NRSolver: 99     D_u: *5.302e-11  D_w:  6.547e-02  R_v:  3.080e-01
NRSolver: 100    D_u: *7.860e-12  D_w:  4.277e-02  R_v:  3.154e-02

it seems clear that the solution is flip-flop'ing around the equilibrium. Adding "constrainednrminiter 5" seems like a good choice.
With this, everything converge. 
Note: Since the constrained parameter hasn't been used for a long time, there was a bug making it so that it was never used, which needs to be fixed first

Around line 180 in NRSolver, it should set the "constrainedNRFlag":

    this->constrainedNRminiter = 0;
    IR_GIVE_OPTIONAL_FIELD(ir, this->constrainedNRminiter, _IFT_NRSolver_constrainedNRminiter);
    this->constrainedNRFlag = this->constrainedNRminiter != 0;

(I'm considering trying to modify NRSolver so that it detects problems like this by default, but this is a much bigger problem to solve, general nonlinear solvers are actually quite difficult)


--------------------------------------
Now, a lengthy reply (sorry) on that second question:

Now, if I understand the problem correctly:
For metal forming in general, there would be no way to solve this problem more efficiently than to try different the loads, and re-compute the problem (different load gives a completely different result). Since you have a simple load shape (a single nodal load) there is only a single variable (the load amplitude) that you care about,  and the optimization problem becomes much simpler.

Unfortunately, OOFEM doesn't have any built in support for any type of inverse/optimization problem.

Spring-back is not necessarily a completely linear problem; and here you will branch out and create, e.g. 20, different (possibly nonlinear, plastic) solutions. All the solvers in OOFEM only store a single (current) internal state (stress, strain, plastic strain), and it can't be easily changed to allow this type of branching (or going back to try again).
There is really nothing built into OOFEM that will help you solve this type of problem, except for possibly the save & restore functionality and modify the analysis to perform the multiple different spring-back simulations. This is a bit messy and unsafe, since the save and & restore functionality wasn't intended for this purpose (a high risk for segmentation faults). A long and thorny road ahead.
The only benefit for all of this work would be *performance* (and you must determine if this mess is worth the effort).

Or, as you suggest, have an external script that solves this optimization problem (by whatever means it can). Doing 20 solutions with different load levels and check the closest, or perhaps do some response-surface-optimization or bisection-search (if you really only need to adjust the load amplitude).
The reason why we have the Python interface is that specialized, conditional problem setups like these are hard to support with a simple input file.
You can of course code your solver in C++ and add it as a special EngineeringModel as well (though, this is not trivial to set up, and requires quite detailed knowledge about OOFEM).

Re: Material plasticity for 2dBeam with LayeredCrossSection

I pushed the small change to www.github.com/Micket/oofem/  so using the "constrainednrminiter 5" should work without modifications now.

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Mikael and OOFEM users,

With all help from Mikael, I managed to finished the initial development of the bending code based on the OOFEM. You can find an example of the implemented solution in the attachment. I would like to report a small update on my work.

The main features of the solution:
- "contact" interaction between tooling and a sheet with thickness (for the moment only "rolling" without sliding is allowed, but next step is to develop "true" contact interaction. Thus, now the contact node is fixed during the calculation step)
- Isotropic hardening with piecewise approximation of the stress-strain curve
- Calculation of the main bending parameters (bend allowance, springback and full profile coordinates for all calculation steps)

The solution shows the good qualitative correlation with the real worl experiments , including reasonable movements of the contact points during the bending process and following multi-breakage effect.

However, the quantitative results are not so precise as they could be hmm

I see the couple reasons for this, first of all it's "bad" contact interaction without sliding (the friction coefficient = infinity).

Another reason and it can be easy seen from the example video. I deliberately included the displacement of the random node of the sheet, it doesn't have any displacement in X-horizontal direction. Also, there is no reactions in the horizontal direction, and I believe that's a consequence of "no-horizontal" displacements. Next step is to find a solution for this issue. I suppose there is an error in libeam2d source code. The input file I'll add in the next post since the only one file is possible to attach. Also there is no reactions in output.

Also, I have some questions.

How and to whom can I report about the bugs in the code? For instance, values in BoundaryCondition should'n be declared, otherwise it won't be possible to get the value of the BC from GeneralBoudnaryConditions giveValues().

Since, tutorialmaterial.c exists and it was created for the students. Has somebody already implemented for instance isotropic hardening for Ludowic hardening law or any other laws? It'll be useful to have some more examples on hardening within the tutorialmaterial framework.

With kind regards,

Vitalii

Post's attachments

BendFEM output_1.avi 1.81 mb, 3 downloads since 2015-05-29 

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

24 (edited by Vitalii.Vorkov 29-05-2015 12:06:54)

Re: Material plasticity for 2dBeam with LayeredCrossSection

The input file with example of no-horizontal displacement and no-reactions output with libeam2d from the previous post.

Post's attachments

horizontal_displacement.in 5.07 kb, 2 downloads since 2015-05-29 

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

Re: Material plasticity for 2dBeam with LayeredCrossSection

Hi Vitalii
It's always nice to have more developers, as it also helps us find bugs.

In this case, please be aware that the libeam model is a mindlin beam theory, which (like most beam models) is only valid for small deflections and does not couple longitudinal deformation with the transversal deflection.
In fact, libeam2d does not take into account geometrical nonlinearities either.
There is not really any error, this is precisely what the mindlin theory assumes, and the beam model reflects this. All beam models in OOFEM are only valid for small deformations.
I'm not at all familiar with large deformation beam models, but if you have a (detailed) reference of any particular beam theory you'd like to see implemented, then we (probably me) can help you implement it.

There has been some initial work on contact support in OOFEM as well. I'd expect this situation to improve in the future (though, unless there is interest in new developers, I don't see it happening very fast).

Regarding your second question:
We have a bug tracker at https://www.oofem.org/trac  but in reality, noone posts there and I never check it. If it's something directed to me, I'd be more likely to check the github bug tracker. Or users can post about it here on the forum.
Regarding your example though, I don't understand it.
What values shouldn't be declared in BoundaryCondition? GeneralBoundaryCondition doesn't have any function "giveValues()" (nor should it).




And lastly, the material models:
I don't think we have any such models.
Except for the few common basic models, the models are developed in research projects, and are usually highly specialized.
TutorialMaterial was added fairly recently, as we wanted a simple tutorial to introduce new PhD students to.
Contributions are of course most welcome.

We do also have the option for using abaqus user materials (umat), so there might be some existing umat files you can use. Other interfaces like this can be added if there is a need (like the ANSYS usermat, etc.)