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 <[email protected]> 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:
> 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 
> <http://colostate.edu/> 
>                             www: http://www.math.colostate.edu/~bangerth/ 
> <http://www.math.colostate.edu/~bangerth/> 
> 
> 
> -- 
> The deal.II project is located at http://www.dealii.org/ 
> <http://www.dealii.org/>
> For mailing list/forum options, see 
> https://groups.google.com/d/forum/dealii?hl=en 
> <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 [email protected] 
> <mailto:[email protected]>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> <umat_workFlow.png>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to