Page 2 of 2 FirstFirst 12
Results 11 to 16 of 16

Thread: How to compile an ABAQUS vumat double precision shared library

  1. #11
    Hi,

    I'm currently working on a VUMAT project and i'm in trouble to get the double precision working with Abaqus cae (v 6.8). I use a user defined precision like
    Code:
             INTEGER, PARAMETER :: wp = KIND(1.0E0)  ! or 1.0D0 for double precision
    in my subroutine. I understood how to create a shared library by modifying the abaqus_v6.env file with an "echo " added at link_sl line. If i'm right the only thing that change in the command between single and double is "libexplicitU.so" which becomes "libexplicitU-D.so" for double precision. But now how can one use this library in Abaqus ? Can one run the job from Abaqus cae or is the command line to be used ? I saw that in Abaqus 6.10 the problem does not exist anymore but i'm stuck with v 6.8 or 6.9 ;(

    Nice Day all


    PS : i solved my problem. For french people i put an howto on : http://www.developpez.net/forums/d12...ble-precision/
    Last edited by rogue-spectre; 2012-04-19 at 05:27. Reason: add a link to an howto

  2. #12
    I solved my problem by showing abaqus the path to the libraries, adding
    Code:
    usub_lib_dir="/absolute/path/to/libraries"
    to the abaqus_v6.env file configuration of abaqus and removing the reference to my subroutine in "Job Manager>Edit>General>Subroutine".

    Thanks you for the trick with the shared libraries.

  3. #13

    How to compile an ABAQUS vuel double precision shared library

    Hi Jorgen,
    I would like to compile an Abaqus vuel subroutine written in Fortran without including "vaba_param.inc" and by using implicit none command
    I use Abaqus 6.11-2
    Do you know how to do this?

    Thank you in advance

    Quote Originally Posted by Jorgen View Post
    If you are trying to create a double precision ABAQUS vumat shared library and are having trouble since you like to use proper Fortan style which includes using the command implicit none at the beginning of all functions. Then this hint might be of interest.

    By default, ABAQUS requires you to write your Fortran code using the "include 'vaba_param.inc'" command, which is a really bad idea since that allows you to use variables without explicitly defining them. The problem with this approach is that it very easily leads to errors and is generally considered bad practice!

    Fortunately, there is a way to compile your own shared VUMAT library by using a command like the following:
    Code:
    ifort -fPIC -r8 -O2 -c vumat.f90
    
    ifort -cxxlib-gcc -gcc-version=330 -fPIC -threads -shared \
     -Wl,-u,vcosimulation_ -Wl,-u,vcosimulation0_ -Wl,-u,vdload_ \
     -Wl,-u,vfabric_ -Wl,-u,vfric_ -Wl,-u,vuel_ -Wl,-u,vufield_ \
     -Wl,-u,vuinter_ -Wl,-u,vumat_ -Wl,-soname,libexplicitU-D.so \
     -o libexplicitU-D.so vumat.o /opt/abaqus/6.7-1/exec/lbr/explicitU_static.a \
     -L /opt/abaqus/6.7-1/exec/lbr -L /opt/abaqus/6.7-1/External \
     /opt/abaqus/6.7-1/exec/lbr/libexplicitB.so \
     /opt/abaqus/6.7-1/exec/lbr/libABQUTI_CoreUtils.so \
     /opt/abaqus/6.7-1/exec/lbr/libABQUTI_UtiLicensing.so \
     -parallel -Wl,-Bdynamic -i-dynamic -lifport -lifcoremt
    This particular command works for a 64-bit Linux computer running ABAQUS v6.7.

    The way I found out the specific compiler flags was by temporarily modify the link_sl variable in the abaqus_v6.env file to include the echo command:
    Code:
    link_sl = ("echo " + fortCmd +
               " -cxxlib-gcc -gcc-version=%i -fPIC -threads -shared " %verId   +
               "%E -Wl,-soname,%U -o %U %F %A %L %B -parallel -Wl,-Bdynamic " +
               "-i-dynamic -lifport -lifcoremt")
    This way the actual link command is echoed on the screen when running abaqus with a source file using the "user=vumat.f" options. This makes it possible to create shared libraries without running the "abaqus make" command which is not powerful enough.

  4. #14
    Join Date
    2000-02
    Location
    Boston, USA
    Posts
    3,362
    Yes, the hint that is outlined in this thread shows the way...
    Have you tried it?

    -Jorgen
    Jorgen Bergstrom, Ph.D.
    PolymerFEM Administrator

  5. #15
    Hi Jorgen,
    I am programming a vuel in Fortran 77. I would like to compile the subroutine in double precision. I would like to use proper Fortran style which includes using the command implicit none as you showed the method for vumat with Abaqus 6.7.
    Do you know the recipe for vuel with Abaqus 6.11-2.
    Thank you in advance

  6. #16
    Join Date
    2000-02
    Location
    Boston, USA
    Posts
    3,362
    I agree with your idea. Note that it will take a bit of work on your part to figure out the proper compile and link commands. The hint outlined above shows how you can get the commands.

    -Jorgen
    Jorgen Bergstrom, Ph.D.
    PolymerFEM Administrator

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
  •