Re: [deal.II] UMAT subroutine in dealii.
Dear Jean-Paul, Sorry for the format of my previous post. It was incomplete and I sent it by mistake. Yes, just last week I did exactly that. Calling the Fortran subroutine from C++ and it works. Before moving forward I wanted to know if someone else in the community is already working on this. Anyways, I will now begin working on interfacing the input/output variables. Also, here's a better description of the UMAT input parameters: http://www.brown.edu/Departments/Engineering/Courses/En2340/Programming/ABAQUS/Usermat.for Thank you all for your help. Best regards, Mahesh Prasad. On Wednesday, August 8, 2018 at 3:57:53 PM UTC+2, Jean-Paul Pelteret wrote: > > Dear Mahesh, > > I guess this is less of a “deal.II” question and more of a C++ question. > It is possible to call a Fortran function from C++ code - if you do a > google search for “c++ calling fortran routine” you get numerous helpful > links showing how it would be done in concept, e.g. > > https://wiki.calculquebec.ca/w/C%2B%2B_:_appels_Fortran/en > http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html > http://neurophys.wisc.edu/comp/docs/not017/ > > So since its possible to make such a call, the question is whether or not > you are able to provide all of the input data expected by the UMAT. It > would be entirely up to you to reproduce the specific FE formulation that > leads to this statement of the stress-strain relationship. I guess that > providing information for the nonlinear solver state, strain, material > parameters, and storage of the internal variables would be somewhat > trivial. Its unclear as to what exactly the inputs vs outputs to/from this > function are, and what parameters like “ !rotation increment matrix” > represent (is this because ABAQUS has elasticity formulation in terms of an > objective stress rate?), so I cannot comment further on what you’d > nominally be able to provide to the called function. > > I hope that this helps you further. > Best, > Jean-Paul > > > On 08 Aug 2018, at 15:18, Mahesh Prasad > wrote: > > Dear Wolfgang, > > It is as you mentioned, the STRAIN is provided as an input to the UMAT. > UMAT then updates the STRESS and returns it as an output. > I have attached an image of the UMAT subroutine for your reference. This > is a very general outline. Please don't worry about all the parameters > which are present in the subroutine definition. > The most important parameters are: > integer ndi!number of stress components > integer nshr !number of engineering shear stress components > integer ntens !size of the stress array (ndi + nshr) > integer nstatv !number state variables > integer nprops !number of material constants > integer layer !layer number > integer kspt !section point number within the current layer > integer kstep !step number > integer noel !element number > integer npt!integration point number > integer kinc !increment number > > c--- > > real(8) drpldt!jacobian drpl_dt > real(8) dtime !time increment dt > real(8) temp !temperature at t0 > real(8) dtemp !increment of temperature. > real(8) celent!characteristic element length > real(8) sse !specific elastic strain energy > real(8) spd !specific plastic dissipation > real(8) scd !specific creep dissipation > real(8) rpl !volumetric heat generation per unit time > real(8) pnewdt!dt_next/dt_now > > c--- > > real(8) ddsdde(ntens,ntens) !jacobian ds_de > real(8) statev(nstatv) !state variables > real(8) props (nprops) !material constants > real(8) ddsddt(ntens)!jacobian ds_dt > real(8) drplde(ntens)!jacobian drpl_de > real(8) stress(ntens)!stress tensor > real(8) stran (ntens)!strains at t0 > real(8) dstran(ntens)!strain increments > real(8) dfgrd0(3,3) !deformation gradient at t0 > real(8) dfgrd1(3,3) !deformation gradient at t0+dt > real(8) drot (3,3) !rotation increment matrix > real(8) coords(3)!coordinates of this point > real(8) time (2)!1:step time; 2:total time, At t0 > real(8) predef(1)!predefined field variables at t0 > real(8) dpred (1)!incr of predefined field vrbs > > > On Wednesday, August 8, 2018 at 6:52:56 AM UTC+2, Wolfgang Bangerth wrote: &g
Re: [deal.II] UMAT subroutine in dealii.
Dear Wolfgang, It is as you mentioned, the STRAIN is provided as an input to the UMAT. UMAT then updates the STRESS and returns it as an output. I have attached an image of the UMAT subroutine for your reference. This is a very general outline. Please don't worry about all the parameters which are present in the subroutine definition. The most important parameters are: integer ndi!number of stress components integer nshr !number of engineering shear stress components integer ntens !size of the stress array (ndi + nshr) integer nstatv !number state variables integer nprops !number of material constants integer layer !layer number integer kspt !section point number within the current layer integer kstep !step number integer noel !element number integer npt!integration point number integer kinc !increment number c--- real(8) drpldt!jacobian drpl_dt real(8) dtime !time increment dt real(8) temp !temperature at t0 real(8) dtemp !increment of temperature. real(8) celent!characteristic element length real(8) sse !specific elastic strain energy real(8) spd !specific plastic dissipation real(8) scd !specific creep dissipation real(8) rpl !volumetric heat generation per unit time real(8) pnewdt!dt_next/dt_now c--- real(8) ddsdde(ntens,ntens) !jacobian ds_de real(8) statev(nstatv) !state variables real(8) props (nprops) !material constants real(8) ddsddt(ntens)!jacobian ds_dt real(8) drplde(ntens)!jacobian drpl_de real(8) stress(ntens)!stress tensor real(8) stran (ntens)!strains at t0 real(8) dstran(ntens)!strain increments real(8) dfgrd0(3,3) !deformation gradient at t0 real(8) dfgrd1(3,3) !deformation gradient at t0+dt real(8) drot (3,3) !rotation increment matrix real(8) coords(3)!coordinates of this point real(8) time (2)!1:step time; 2:total time, At t0 real(8) predef(1)!predefined field variables at t0 real(8) dpred (1)!incr of predefined field vrbs On Wednesday, August 8, 2018 at 6:52:56 AM UTC+2, Wolfgang Bangerth wrote: > > On 08/07/2018 03:31 AM, Mahesh Prasad wrote: > > > > Thank you for the suggestions. I have already looked through the > > "Applications" and found that "PRISMS-Plasticity" is working on similar > lines > > (Crystal Plasticity FEM). > > The nature of the problem is : Multi-scale simulations using Crystal > > Plasticity FEM. > > > > Over the years we have developed the UMAT subroutine that describes our > > material models. So, instead of implementing them from scratch in dealii > we > > would like to have an interface that communicates between the UMAT and > > dealii. So, my question is: Has anyone tried to link the UMAT > subroutines > > with dealii ? i.e., The UMAT (fortran 90) has to be called at each > integration > > point. If not, How do I go about linking the fortran code with dealii ? > > Mahesh, > since few of us will be familiar with how exactly ABAQUS interfaces with > externally written routines, can you explain what these UMAT functions > take as > input, and which information they return? > > I suspect that they probably receive the strain as input and return the > stress > as output, but it would be good to know for sure. It may also be that it's > the > derivative tensor, of course, which may actually be more useful in > practice. > > Best > WB > > -- > > Wolfgang Bangerth email: bang...@colostate.edu > > www: http://www.math.colostate.edu/~bangerth/ > > -- 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [deal.II] UMAT subroutine in dealii.
Dear Jean-Paul, Thank you for the suggestions. I have already looked through the "Applications" and found that "PRISMS-Plasticity" is working on similar lines (Crystal Plasticity FEM). The nature of the problem is : Multi-scale simulations using Crystal Plasticity FEM. Over the years we have developed the UMAT subroutine that describes our material models. So, instead of implementing them from scratch in dealii we would like to have an interface that communicates between the UMAT and dealii. So, my question is: Has anyone tried to link the UMAT subroutines with dealii ? i.e., The UMAT (fortran 90) has to be called at each integration point. If not, How do I go about linking the fortran code with dealii ? Thank you! Mahesh Prasad. On Monday, August 6, 2018 at 8:13:23 PM UTC+2, Jean-Paul Pelteret wrote: > > Dear Mahesh, > > If you browse through both the tutorials > <https://dealii.org/9.0.0/doxygen/deal.II/Tutorial.html> and the code-gallery > contributions <https://dealii.org/9.0.0/doxygen/deal.II/CodeGallery.html>, > you will notice that deal.II is completely agnostic about which finite > element formulation you wish to implement and the concept of a material > model (constitutive law) associated with the governing equations. So you > have complete freedom as to how you would want to implement a material law. > There are also a few application frameworks based on deal.II (see the > “Applications” tab at the top of the homepage <https://dealii.org/>) that > would presumably offer some interface between user defined material models > and their framework, but if your interest lies in using one of these codes > then you would have to investigate this more deeply yourself. > > If you could give more details as to what the nature of the problem that > you’re trying to implement is, then maybe someone with experience in this > specific topic could share some further insights with you. > > Best, > Jean-Paul > > On 06 Aug 2018, at 19:08, Mahesh Prasad > wrote: > > Hello everyone, > > I am making a transition from ABAQUS to dealii. But they are many open > questions. Among them the most important one is User defined materials. > I would like to know if anyone has worked / still working in implementing > UMAT subroutine within dealii ? > > Best regards, > Mahesh Prasad. > > -- > 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 . > For more options, visit https://groups.google.com/d/optout. > > > -- 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[deal.II] UMAT subroutine in dealii.
Hello everyone, I am making a transition from ABAQUS to dealii. But they are many open questions. Among them the most important one is User defined materials. I would like to know if anyone has worked / still working in implementing UMAT subroutine within dealii ? Best regards, Mahesh Prasad. -- 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.