Page 1 of 3 123 LastLast
Results 1 to 10 of 22

Thread: nblock in VUMAT

  1. #1
    Join Date
    2009-10
    Location
    Kanpur, India
    Posts
    23

    nblock in VUMAT

    Hello all,

    I am working on polymer constitutive modeling and have recently started using ABAQUS.

    I am currently using VUMAT for defining my user material. I am confused as to what 'nblock' refers to.

    The manuals say that it is the number of material points. Are these equal to number of elements? or are these similar to guass points. And how does abaqus decides the value for nblock.

    Also, is there a way to get the element number in vumat subroutine?

    Any help is much appreciated.

    regards
    B

  2. #2

    Cool

    Hi,

    'nblock' refers to the ID of the Gauss pt among stacked (or vectorized) Gauss pts.

    And yes, there are ways to get the element number.
    One attractive method is using a ghost shell function.

    Kumar

  3. #3
    Join Date
    2009-10
    Location
    Kanpur, India
    Posts
    23
    Hi Kumar,

    Thanks for your reply...

    I use C3D8R elements and I gathered from internet that C3D8R has only one integration point. Is that the gauss point?

    Also, when I print the nblock to output file, I see the value as always equal to the number of elements.

    Am I missing something very basic? Also I have tried checking for the ghost shell function, but didnt find much information.. Could you please elaborate on it.

    Thanks again
    B

  4. #4

    Talking

    You are using C3D8R elements which means continuum 3D 8 noded reduced integration. A reduced integration of this kind has a single Gauss pt.
    Thats why you have matching GP and element numbers.

    Regarding the second, apply the following cover,

    subroutine vumat (
    c Read only -
    1 jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
    2 stepTime, totalTime, dt, cmname, coordMp, charLength,
    3 props, density, strainInc, relSpinInc,
    4 tempOld, stretchOld, defgradOld, fieldOld,
    5 stressOld, stateOld, enerInternOld, enerInelasOld,
    6 tempNew, stretchNew, defgradNew, fieldNew,
    c Write only -
    7 stressNew, stateNew, enerInternNew, enerInelasNew )
    c
    include 'vaba_param.inc'
    c
    dimension jblock(*), props(nprops),density(*), coordMp(*),
    1 charLength(*), strainInc(*),
    2 relSpinInc(*), tempOld(*),
    3 stretchOld(*),
    4 defgradOld(*),
    5 fieldOld(*), stressOld(*),
    6 stateOld(*), enerInternOld(*),
    7 enerInelasOld(*), tempNew(*),
    8 stretchNew(*),
    9 defgradNew(*),
    1 fieldNew(*),
    2 stressNew(*), stateNew(*),
    3 enerInternNew(*), enerInelasNew(*)
    c
    character*80 cmname

    parameter (
    1 i_umt_nblock = 1,
    2 i_umt_npt = 2,
    3 i_umt_layer = 3,
    4 i_umt_kspt = 4,
    5 i_umt_noel = 5 )

    call vumatXtrArg ( jblock(i_umt_nblock),
    1 ndir, nshr, nstatev, nfieldv, nprops, lanneal,
    2 stepTime, totalTime, dt, cmname, coordMp, charLength,
    3 props, density, strainInc, relSpinInc,
    4 tempOld, stretchOld, defgradOld, fieldOld,
    5 stressOld, stateOld, enerInternOld, enerInelasOld,
    6 tempNew, stretchNew, defgradNew, fieldNew,
    7 stressNew, stateNew, enerInternNew, enerInelasNew,
    8 jblock(i_umt_noel), jblock(i_umt_npt),
    9 jblock(i_umt_layer), jblock(i_umt_kspt))

    return
    end

    c ----------------------------------------------------------------------------------

    subroutine vumatXtrArg (
    c read only -
    1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
    2 stepTime, totalTime, timeinc, cmname, coordMp, charLength,
    3 props, density, strainInc, relSpinInc,
    4 tempOld, stretchOld, defgradOld, fieldOld,
    3 stressOld, stateOld, enerInternOld, enerInelasOld,
    6 tempNew, stretchNew, defgradNew, fieldNew,
    c write only -
    5 stressNew, stateNew, enerInternNew, enerInelasNew,
    c read only extra arguments -
    6 nElement, nMatPoint, nLayer, nSecPoint)
    c
    include 'vaba_param.inc'
    c
    c all arrays dimensioned by (*) are not used in this algorithm
    dimension props(nprops), density(nblock),
    1 strainInc(nblock,ndir+nshr),
    2 relSpinInc(nblock,nshr), defgradOld(nblock,9),
    4 stressOld(nblock,ndir+nshr),
    5 stateOld(nblock,nstatev), enerInternOld(nblock),
    6 enerInelasOld(nblock),
    7 stretchNew(nblock,ndir+nshr), defgradNew(nblock,9),
    8 stressNew(nblock,ndir+nshr)

    dimension enerInelasNew(nblock),stateNew(nblock,nstatev),
    1 enerInternNew(nblock)

    dimension nElement(nblock),nMatPoint(nblock),nLayer(nblock),
    1 nSecPoint(nblock)

    character*80 cmname


    c make computations for every material point
    c -----------------------------------------------------------------------

    do 1000 nblck = 1,nblock

    Nelem=nElement(nblck) ! here we go
    blah blah blah

    enddo

    return
    end
    Last edited by Kumar Kurambakurash; 2009-11-11 at 12:16.

  5. #5
    Join Date
    2009-10
    Location
    Kanpur, India
    Posts
    23
    thanks again.. things are much clearer now...

    regards

  6. #6
    Join Date
    2000-02
    Location
    Boston, USA
    Posts
    3,280
    Hi Kumar,

    You are presenting some very interesting information

    I did not know you could determine the element number from within a VUMAT subroutine. How on earth did you figure that out

    I assume that you have tried that approach and that it works, is that right? Is your approach a known feature? Are you working for Abaqus (Simulia)?

    Very cool stuff!
    Jorgen
    Jorgen Bergstrom, Ph.D.
    PolymerFEM Administrator

  7. #7
    Dear Jorgen,

    It really is cool I agree.

    I remember finding the method through a long web search.

    Thus the credit is not mine.

    However I have tried the method and it works perfectly fine and and it is reliable.

    Best

    Kumar

  8. #8

    Gauss points vs. integration points

    Quote Originally Posted by brunda View Post
    Hi Kumar,

    Thanks for your reply...

    I use C3D8R elements and I gathered from internet that C3D8R has only one integration point. Is that the gauss point?

    Also, when I print the nblock to output file, I see the value as always equal to the number of elements.

    Am I missing something very basic? Also I have tried checking for the ghost shell function, but didnt find much information.. Could you please elaborate on it.

    Thanks again
    B
    The integration points are called Gauss points since the required integrations follow Gaussian quadrature.

  9. #9
    Hi guys,

    I light of the above comments, I also had a question regarding nblock. I have been working on a composite laminate damage model in vusdfld (abaqus v6.81) for the initial phase, but will be switching over to vumat soon.

    I also need to know the element number at a particular material point when using S4 (four integration points) shell elements with vusdfld. Curiously though when I output nblock for my 196 element model it alternatively displays 136,136......60,60,60 etc

    Would anyone have any clues as to why this is? I saved a state variable with the value of "k" every time the subroutine was called, and when checking the value of this variable in Viewer, element 1 corresponds to material pt 1 and element 2, mat pt 2 and so on until I reach element 137 where it starts again with material pt 1.

    Any thoughts?

    Thanks!
    Andrew

  10. #10
    Hi all,

    the V in VUMAT (and all other user defined explicit elements) stands for "vectorized". This means that abaqus passes chunks of data (i.e. nblock elements at once) to the user subroutine for calculation. That's why you always have to loop over nblock: you need to determine the results for all elements abaqus passed to your routine.
    For small models, nblock may correspond to the number of elements in your model and subsequently kblock (current increment in nblock) corresponds to the element number. For larger models, there are multiple calls to your subroutine due to performance reasons, hence the number of elements differs from nblock and kblock has to be determined using nElement(kblock) (as mentioned before)...

    Regards

    Andi

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •