PDA

View Full Version : Parametric study with umat using ABAQUS



Polyurethane
2006-11-30, 19:21
Hi there,
This is the first place I want to go when I am stuck. Always got very useful replies.

Does anyone know how to execut a scrip parametric study with a given umat in abaqus/standard? I have the template input file and umat fortran file ready. Following the abaqus manual about scripting, I created a psf file but failed to get it run.

First I tried the command:
abaqus job=jobname, script =scriptfile, user=umatfile
The error message: Command line option "job" may not be used with "script". Valid options for use with "script" are:['startup', 'noenvstartup']

Then I tried
abaqus script =scriptfile, user=umatfile
Message:
Command line option "user" may not be used with "script".
Valid options for use with "script" are:
['startup', 'noenvstartup']

All these files (.psf, .inp, .f) are in the same folder and the inp file works well with the umat.
Any help would be highly appreciated.

Polyurethane

Jorgen
2006-11-30, 22:42
I have not found the parametric study features that useful, perhaps I simply have not figured out what they can do. Can you explain what you are trying to accomplish?

Anyway, I believe that you run an ABAQUS parametric study with the command:
abaqus script=scriptfile

The scriptfile then contains the name of the parametrized input file.

In order to use a user-material I suspect that you should first compile a shared library version of your user subroutine using:
abaqus make library=umatfile.f

Then add the following lines to your abaqus_v6.env file:
import os
usub_lib_dir = os.getcwd()

I have not tried this, but I suspect that this approach should work.

- Jorgen

Polyurethane
2006-12-01, 00:10
I am trying to look at the effect of the material properties on the simulating load-displacement curve. So I was thinking setting some material properties like modulus as a parameter and then running the parametric study.

My project is to fit the simulated load-displacement curve to experimental one and then find the material properites. So I am acctually looking for a way to do this optimization loop. Parametric study is a first step from which I can get a idea how those parameters affect the result.

Do you know any simple way to do automatic optimization loop using abaqus? Here is what this should acheive: with some reasonable initial values of material properties, abaqus gives load-displacement curve. Then this curve is compared with the experimental one and using some optimization method new guesses of material properties are given and then abaqus simulation is executed automaticly using those guesses. This loop will run until the difference beteen the two is within a tolerence. Any suggestions/references on this?

About what you setting in the env file, what does usub_lib_dir mean? The directory of the library file? What if there are two umat library files in the same folder? Can I specify the file name?

Thanks a million!

Jorgen
2006-12-04, 01:03
Your approach to find the material parameters sounds OK. I often find the material parameters for a material model using an external program (such as Matlab) generate the material parameters and then run ABAQUS to create the predicted stress-strain data. The external program can then iteratively improve the initial guess of material parameters until a desirable agreement with the experimental data is achieved.

The usub_lib_dir variable specifies the directory in which the shared library files are located. Unfortunately you cannot have a library file for each material model, since the library file has to have a specific name.

- Jorgen

nmames
2006-12-04, 20:02
if you don't want to create a library, you can put this in your script file:

mystudy.execute(ALL,execOptions=' user=umatfile')

where mystudy is your instance of the ParStudy object. you can add as many execution options as you'd like to the string inside the execute statement (e.g. double, cpus=2, etc).

i agree with jorgen, though. its much easier to iterate in matlab using a simple 1D approximation.

Polyurethane
2006-12-05, 14:12
Very helpful. Thanks for both replies. :)

I am curious about how you do the iteration in matlab.
For instance, assume experiment gives a [n by 2] array where the first column is load and second one is displacement. Abaqus gives a similar [m by 2] array. How do you run a 1-d approximation to get the new guesses for material properties? Furthermore, when you get the new guesses, how to execute Abaqus automatically?
It will be highly appreciated if you can give me an example of the codes.

Another question related to this parameter fit is about uniqueness. If I have 4 parameters need to be determined, how many simulations with different loading condition are required? My guess is at least 4. But I don't know how to think this in a math way.

cjfscut
2008-10-18, 07:57
if you don't want to create a library, you can put this in your script file:

mystudy.execute(ALL,execOptions=' user=umatfile')

where mystudy is your instance of the ParStudy object. you can add as many execution options as you'd like to the string inside the execute statement (e.g. double, cpus=2, etc).

i agree with jorgen, though. its much easier to iterate in matlab using a simple 1D approximation.

Hello,everyone, I have come across the same problem as the question described here and I have already tried the method suggested above. but unfortunately, when I excute the file interactively, the screen prompts that the userfile cannot be found. I did put the userfile in the abaqus's work directory, even though i refer the userfile to the absolute path.

like "mystudy.execute(ALL,execOptions=' user=D:\abaqus\mywork\umatfile')"

it didn't work too. the same problem is happened. abaqus cannot located the file.

i have search in google for this question,but found very little information. the only method is the one described above.

by the way, the method of adding the absolute path in the options was suggested by someone else, in his machine, he can locate the file. while in mine, I can't. I also tried to install abaqus in other people's computer to see whether it's the computer that affect. but it happened the same problem.

did anyone knows how to solve this problem?


thanks a million!

Jorgen
2008-10-26, 21:40
I suspect that you can solve the problem by pre-compiling the user-material subroutine into a shared library. You can do this, for example, using "abaqus make library=..."

Once you have a shared library version you can save those files anywhere and use the "usub_lib_dir" environmental variable to tell Abaqus about the location.

If you do all of this then the user-subroutine basically become built-in into Abaqus.

-Jorgen

cjfscut
2008-10-29, 20:54
Thanks for your reply! Dr. Bergstrom.

I have follow your suggestion, using "abaqus make library=myumat.for", thus, a file named "standardU.dll" has been generated in my work directory.

then I add the "usub_lib_dir="D:\abaqus\mywork\standardU.dll" in the file of abaqus_v6.env, I also try "usub_lib_dir="D:\abaqus\mywork" in the .env file.(since I haven't try to configuring the enviroment file before, I don't know how to add the path, so i try both, but i don't know whether it is right or not.)

however, when i excute the script file, the comand windows mentioned It failed to analyze the job.

I think an alternative method to solve this problem is to code a program to fetch all the .inp files in each parametrci file foders into one foder and then write a batch processing file to do the parametric study(because all the parametric study files has all been generated the problem happened when the analysis begins),

but the problem still remains, I just find another way to avoid it.

Jorgen
2008-11-02, 20:31
I am suprised to hear that the usub_lib_dir method did not work for you.

I suspect that you did something wrong :confused:
Can you double check your approach?

-Jorgen

cjfscut
2008-11-03, 06:35
Thanks, I will try to check it again more carefully.