Application for the use in continuum mechanics

93 views
Skip to first unread message

Lukas Lamm

unread,
Aug 15, 2019, 3:45:12 AM8/15/19
to deal.II User Group

Dear dealii community,


first of all I would like to thank you for this wonderful piece of work you all have produced. It is by far the most well designed and documented open source FE library I have seen so far.


I am working in the field of computational continuum mechanics and was wondering, if anyone of you know about (or is even working on) an application built on top of dealii for the use in continuum mechanics. Something like tutorial 44, but more sophisticated and advanced. If there is anything out there, I would be really happy to recieve a short feedback with links to github etc.


Thank you very much for your help.


Mit freundlichen Grüßen / kind regards,


Lukas Lamm, M. Sc.

Research Associate / Ph.D. candidate

RWTH Aachen University
Instit
ute of Applied Mechanics

Mies-van-der-Rohe-Str. 1 Room 308d

D-52074 Aachen


Phone: +49(0)241 80 2
5006

Mail: lukas...@ifam.rwth-aachen.de
Web: www.ifam.rwth-aachen.de

Lucas Campos

unread,
Aug 16, 2019, 4:11:24 AM8/16/19
to deal.II User Group
Dear Lukas,

I am working with Continuum Mechanics, although I would not call my research "more advanced" than the stuff in tutorial-44, at least from a computational point of view. Mostly, growing materials. Could you be a bit more specific on your needs?

Bests,
Lucas

Lukas Lamm

unread,
Aug 16, 2019, 4:57:06 AM8/16/19
to deal.II User Group
Hey Lucas,

thanks for your response. I was actually searching for some application somehow similar to FE software like e.g. FEAP or Deadalon, where you can e.g. easily implement any desired material model but do not have to care about the whole assembly and solution process. At least not if you do not explicitly want to. Writing it by myself would not be a problem I guess, but would still be some effort. Therefore, I thought that maybe someone alse is already working on such a package and I could participate in the development process.

Best regards,
Lukas

Lucas Campos

unread,
Aug 16, 2019, 5:16:26 AM8/16/19
to deal.II User Group
Dear Lukas,

I fully understand your point. No need to reinvent the wheel. I don't know any such software. However, if this is the whole change you want to do, tutorial-44 seems indeed to be a suitable start for you, even if this is a somewhat complicated program.

> where you can e.g. easily implement any desired material model but do not have to care about the whole assembly and solution process

In that tutorial, the whole material model is contained into four functions, get_tau(), get_Jc(), get_dPsi_vol_dJ() and get_d2Psi_vol_dJ2(). By creating other objects with such an interface + some fun templating (or by using virtual functions), it should be easy to access various materials.

Incidentely, I noticed we are geographically close. Do you mind if I send you a direct email?

Bests,
Lucas

Alberto Salvadori

unread,
Aug 16, 2019, 5:29:44 AM8/16/19
to dea...@googlegroups.com
HI Lukas

We at m4lab (m4lab.unibs.it) have been writing a Constitutive model library and a set of “steps”, with the same style of deal.ii steps 18 and 44. 

So far, we did not made them public but if this may interest you we can definitely share the code and then will see. 

Did you look into PRISMS at Michigan state? Looks similar to what you are looking for.

Alberto

Alberto Salvadori
Associate Professor 
DIMI, University of Brescia, Italy

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/ca8fda63-788b-419f-94fc-705ef3ec85f9%40googlegroups.com.


Informativa sulla Privacy: http://www.unibs.it/node/8155

Lukas Lamm

unread,
Aug 16, 2019, 5:41:37 AM8/16/19
to deal.II User Group
Hey Lucas,

sure, just contact me directly at lukas...@ifam.rwth-aachen.de

Since I am also working on growth processes, getting in touch might be interesting for both of us.

Best regards,

Lukas

Lukas Lamm

unread,
Aug 16, 2019, 5:46:39 AM8/16/19
to deal.II User Group
Hey Alberto,

thanks for the response. PRISMS-plasticity seems to be really interesting for me. I might have somehow overlooked the application when I was searching the dealii page. Anyway, it would also be interesting to take a look at your coe if you would be so kind to share it with me.

Best regards,,
Lukas

Am Freitag, 16. August 2019 11:29:44 UTC+2 schrieb Alberto Salvadori:
HI Lukas

We at m4lab (m4lab.unibs.it) have been writing a Constitutive model library and a set of “steps”, with the same style of deal.ii steps 18 and 44. 

So far, we did not made them public but if this may interest you we can definitely share the code and then will see. 

Did you look into PRISMS at Michigan state? Looks similar to what you are looking for.

Alberto

Alberto Salvadori
Associate Professor 
DIMI, University of Brescia, Italy

To unsubscribe from this group and stop receiving emails from it, send an email to dea...@googlegroups.com.

Wolfgang Bangerth

unread,
Aug 16, 2019, 1:18:56 PM8/16/19
to dea...@googlegroups.com
On 8/16/19 2:57 AM, Lukas Lamm wrote:
>
> thanks for your response. I was actually searching for some application
> somehow similar to FE software like e.g. FEAP or Deadalon, where you can
> e.g. easily implement any desired material model but do not have to care
> about the whole assembly and solution process. At least not if you do
> not explicitly want to. Writing it by myself would not be a problem I
> guess, but would still be some effort. Therefore, I thought that maybe
> someone alse is already working on such a package and I could
> participate in the development process.

I suspect that he will chime in himself at some point, but you may also
want to look at the functionality Jean-Paul Pelteret has implemented for
the last release that allows you to just specify a stored energy and
then get the residual and Newton matrix out of this by automatic
differentiation. You should be able to find this in the AD namespace.
The classes there have many example code snippets.

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

Sebastian Stark

unread,
Aug 16, 2019, 4:36:10 PM8/16/19
to dea...@googlegroups.com, Lukas Lamm

Dear Lucas,

As a by-product of my worked I have implemented (or, rather, I am implementing) something similar to what you describe, though the focus is not on mechanics alone, but rather on coupled problems. Essentially, the library I have written is solving problems where a possibly non-linear potential A(u) exists (u are the "independent fields" which may also include some scalar unknowns) such that the problem you want to solve is equivalent to requiring that A(u) is stationary. [Actually the implementation also works for many cases where the potential does not exist - just like in mechanics where you can obtain the weak form by pretending that there is a potential energy and afterwards you throw this assumption away and say that the stress doesn't derive from a strain energy potential.]

To give you an idea how it works here is a description of the general process when solving a problem with the library:

(1) you set up a domain mesh, which may be composed of different domain portions. If you have got unknowns living on boundaries or interfaces between different domain portions, you can additionally define a boundary/interface mesh based on the domain mesh.

(2) You define the independent fields and the finite elements you want to use for their discretization (you can use a different one for each independent field). Each of these independent fields may either live on the domain or on boundaries/interfaces. Also you can, for each field, specify domain/boundary/interface portions where it is generally zero (e.g. to account for problems where the physics are different in different domain portions).

(3) You define a number of dependent fields in terms of the independent fields (each dependent field can be a linear function of all u and the first derivatives thereof - second derivatives would require C1 elements, which are anyway not available with deal.II). An example for such a dependent field would be the deformation gradient defined in terms of the displacement.

(4) You define the form of A(u) as a general function of an arbitrary number of integrals over domain portions and possibly boundary/interface portions [If A(u) is not just a sum of integrals, which it actually is for the majority of cases, you will have to implement the form of this general function and its first and second derivatives].

(5) You define the first and second derivatives of the integrands appearing in A(u) with respect to the dependent fields and the quadrature schemes to be used for evaluation of the integrals (you can use a different quadrature for each integral). This is the really problem specific part. In a mechanics context you would have to implement the stress-strain relation and the corresponding material tangent as well as possible forcing terms here.

(6) You define constraints (the library already provides with functions for hanging nodes constraints and Dirichlet constraints, but if you want to do something more complicated, you'll have to do this yourself).

(7) Sparsity pattern generation and assembly of the system matrix and the right hand side is then done automatically [in case A(u) is not just a sum of domain / boundary / interface integrals, but rather a general function, there's not just a matrix, but also three other matrices which are there to avoid dealing with a dense system matrix].

(8) Solve the system (if you use a direct solver there's not much you have to do here).

(9) Repeat if the problem is non-linear and you have to iterate or if the problem is time dependent.

The status right now is that a basic version works in sequential and I have done the first distributed parallel computation just today. However, it's really work in progress, so there are many gaps to fill and things which are not quite like I want to have them. For example I haven't implemented the transfer of the solution (and possible hidden variables like plastic strains appearing in the definition of the constitutive relations) after mesh refinement yet. Having this said, I would be really happy if somebody is interested to contribute to the library and use and test it. For now, I have made it public on github, so that you can have a look at it (https://github.com/starki0815/GalerkinTools). In the doc folder there are two pdfs which may give you some more insight; also there is the Dogygen generated code documentation. If you are interested to try it, let me know (you'll probably need some guidance, because a few modifications to deal.II - missing template instantiations, etc. - have to be done). Also, I have just created an examples folder with an example resembling the deal.II tutorial step-46, where you can see how a typical use of the library looks like (the fun fact is that I wanted to use the example as a verification of my implementation, but it turned out that there was a bug in the original step-46 matrix assembly :) ).

Hope that gives you an idea.

Regards, Sebastian

Am 16.08.19 um 10:57 schrieb Lukas Lamm:
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.

Jean-Paul Pelteret

unread,
Jan 7, 2020, 5:35:20 PM1/7/20
to dea...@googlegroups.com
Well, I’m just a little late to reply, but better that than never…

As Wolfgang said, if you want the absolute minimum amount of work to do to assemble a local system contribution when considering hyper elastic materials, then you can use the
Differentiation::AD::EnergyFunctional class to compute the residual and its linearisation for linear or hyper elastic materials. We also have a test in the test suite that reimplements step-44 using this technique. There’s also this code gallery example that shows the same problem (finite strain non-linear elasticity) implemented fully by hand, and using 2 variations of automatic differentiation.

I hope that this helps.
Best,
Jean-Paul

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages