Topic: Microplane Material Model with Stress-Strain Boundaries

Dear Sirs,
I'm a second year Master Student under a Computational  Engineering,
right now I'm doing my 3rd semester project work in  Microplane Model for Concrete and Quasi Brittle Materials with Stress-Strain Boundaries for the inelastic Part, Specifically M4.
I would like to  implement the M4 in Material level with an implicit Solution Algorithm.
Right now I have Several problems regarding:
1-The Stress-Strain Boundaries (Close to be fixed)
2-I have a lot of Convergence Problem, since  I use a Constant Elastic Tangential Material Tensor (inconsistent in somehow), which doesn't give the right direction for the implicit iterative solution especially for the inelastic part of the model (but I would like to use a consistent one through introducing thermodynamic restrained if I can do that)
I heard that you implemented this model to OOFEM Program with an Implicit solver too,
can you please help me regarding my problems and give me a brief regarding what you have done, and I don't mind to share my results with you too.
I'm looking forward for your reply
with best regards,

Re: Microplane Material Model with Stress-Strain Boundaries

Dear Aamir,
I'm not sure what you are looking for, but as far as I can tell, the M4Material in OOFEM only implements the elastic tangent.
See
http://www.oofem.org/gitweb/?p=oofem.gi … 61;hb=HEAD
line 118-122

3

Re: Microplane Material Model with Stress-Strain Boundaries

Dear Aamir,

As pointed out by Mikael, the m4 model implementation only supports the elastic stiffness, as the tangent one is not so easy to obtain due to the formulation of the model. Perhaps, the numerical differentiation could be used to construct the tangent matrix, but this could be relatively costly. Due to lack of tangent stiffness, the model is typically used in explicit solution schemes (explicit  dynamics, or explicit dynamic relaxation for statics), however, it can be used in implicit simulations as well. The convergence is slow, of course, but it should be stable. I don't remember any problems with convergence.
Another problem of the model is that it does not includes any regularization, so it must be used carefully in problems with strain softening to ensure proper energy dissipation.
The convergence problems usually do not depend on stiffness type. For example, when constructing tangent one, you assume the future behavior (loading or unloading, for example) which may not be always correct. Usually the problem is due to incorrect control on the global level (load vs displacement control, etc). With elastic stiffness I would expect slow, but stable convergence.

Re: Microplane Material Model with Stress-Strain Boundaries

Dear sirs,
Really thank you for your quick reply,
I'll review everything again and I'll let you know my feedback,
but before that, can you refer to me the paper you used for your boundaries, material Parameter and the computational Algorithm cause I see some differences between mine and what you used, perhaps you have used a modified M4 with more Fixed and Free material Parameters.
but still I have a lot to discuss with regarding the consistency of Tangential Material Stiffness.
thanx once again and I'm looking forward for your reply.

Re: Microplane Material Model with Stress-Strain Boundaries

Hello,
it's me again,
I have two more questions,
1-in your code I can't see any part regarding the Unloading and stiffness Degradation regarding Microplane Tangential (Shear) Components, I mean CT for Unloading case, is it always a proportional of CD, (CT=mu*CD)? but if this the case it doesn't make a sense, since the damage and loading and unloading criteria should be independently for all microplanes Components (The Volumetric,  Deviatoric and Tangential),
or simply consider no Degradation and take CT=ET, (ET=Virgin Tangential (Shear) Stiffness)??

2-The previous values,
I mean let us assume we're at  the END of time step= time3,
and Now I should Store Some Quantities for Next time Step for Example Microplane Volumetric Stress Sigv, Previous_Sigv=Sigv,
and Now we Started the  time step= time4,

and Now is my question, is this Previous_Sigv should be updated during the inner Newton Iterations?? or remains constant and just be updated at the End of the Iteration (Means End of  time4) only and hence,  at  the END of time step= time4 =>Previous_Sigv=Sigv??
I'm really confused regarding this part, and I'm really looking forward for your reply,
All the best

Re: Microplane Material Model with Stress-Strain Boundaries

hey guys, I'm really waiting urgently for your reply smile

Re: Microplane Material Model with Stress-Strain Boundaries

Unfortunately, the documentation doesn't reveal the original author, nor refer to any research paper (both are things that I strongly encourage new contributions to include).

I'll give you the answers I can, but I know absolutely nothing on the theory.

2- Material routines with state variables keep track of in respective MaterialStatus class.
The MaterialStatus class also stores temporary values, which contains the values rom the last iteration.
When a timestep is finalized, i.e. convergence have been reached, we know we have the right values stored in the temporary fields, the temporary variables are copied over (MaterialStatus::updateYourself), and the next time step can begin.

M4Material::updateVolumetricStressTo is called every newton iteration, and stores the temp value o the volumetric stress, which is copied over from temp to real stress at the end of each time step.


I should mention that the object oriented design of OOFEM allows similar classes of material routines to share common code, and in this case, not everything about the M4 material is actually located in m4.c.
You should look at the class M4Material inherits from, and in particular, look for the main entry-point for all constitutive drivers, which is the "giveRealStressVector" function. For the M4 material, this is located in
microplanematerial_bazant.C
where this is what you are probably looking for;
MicroplaneMaterial_Bazant :: giveRealStressVector

I don't know the theory here at all, but at least this function has a conditional statement, perhaps this is the unloading part you are looking for?

Re: Microplane Material Model with Stress-Strain Boundaries

Dear Mikael Öhman,
Thanx a lot for your reply,
I guess we reached a good point of understanding each other,
after I finish my project I don't mind to Enhance all what is related to Microplane, but of course I'll need your help regarding the Programming basis of the program,
now I have an strong theoretical basis regarding the Microplane Models but still I'm bit not so good regarding the implementations, but I'm developing my self nowadays,

ok let us go back to the code, as  I told you, I guess we reached a good point of understanding each other:
you said that (The MaterialStatus class also stores temporary values, which contains the values from the last iteration), but the most important question is, are these temporary values called by the program  during the iterations? or just stored and saved when the convergence been achieved and then are called when the new time step starts??????
really hope you answer me this question as much fast as you can smile

regarding the unloading part, unfortunately these are not what I'm looking for, these function's conditions are called the Stress-Strain Boundaries which the stresses are not allowed to go behind them and then mostly control the softening behavior in the inelastic part of the relation.

Re: Microplane Material Model with Stress-Strain Boundaries

In this case, the MaterialStatus stores the stress, and the strain (of the last equilibrated state), and the temporary values (which comes from guess of the displacements in the last newton iteration).
When convergence have been reached, the time step is finalized, and the temporary stress and strain are copied over to the equilibrated values.
So, yes. They are stored, and copied over when the new time step starts.

We don't want to have to call the material routine an extra time to get the final values at the end of the time step.

I'm not sure what you mean by the variables being "called". When you ask for the tangents, the temp* values are read (you always get the tangent corresponding to the last call to "giveRealStressVector"), other than that, they are not read, just written to.

Re: Microplane Material Model with Stress-Strain Boundaries

I really couldn't undersand you probably,
so you think those temprory saved values are read during the inner iteration too?
and then finally stored when we get the convergence? right?
that's what I understood big_smile
if this is the case, this looks interesting,
and I guess I have to read the codes carefully again,
and I let you know my feedback.
Thank you Mr. Mikael Öhman

Re: Microplane Material Model with Stress-Strain Boundaries

Generally, temp values can be read, and are typically done so when computing the tangent.
In this case, since M4 only computes the elastic tangent, it doesn't need to read the temporary values.

Re: Microplane Material Model with Stress-Strain Boundaries

Hey Mikael Öhman,
finally I enhanced my codes and I have nice results after thousands of trials and enhancement smile
I have an stable convergence with the elastic tangent, it's in somehow slow as we expected.

I still have mesh dependency problem (Strain Localization), as you have as well.
My next step to solve this problem, I have some idea to use the cohesive crack approaches if it works, I'll help you too.

anyway, if you want I can enhance your documentation too regarding the microplane model, because we almost use the same version.
unfortunately your documentation regarding this topic is really not enough for normal users, at least they have to know the idea behind it and the parameter they have to use and their roles.
thanx a lot for your help.