abaqus

Abaqus read input file very slow for many materials


EDIT*: After all it turned out that this is not causing the slow import. Nevertheless the answer given explains a better way to implement different densities with one material. So I'll let the question exist. (Slow import was caused by running the scripts from the abaqus PDE and not using 'Run script' from the file menu. special thanks to droooze for finding the problem)

I'm trying to optimize the porosity distribution of a certain material. Therefor I'm performing abaqus FEA simulations with +-500 different materials in one part. The simulation itself only takes about 40 seconds, but reading the input file takes more than 3 minutes. (I used a python script to generate the inp file)

I'm using these commands to generate my materials in the input file:

*SOLID SECTION, ELSET = ES_Implant_MAT0 ,MATERIAL=Implant_material0
*ELSET, ELSET=ES_Implant_MAT336
6,52,356,376,782,1793,1954,1984,3072
*MATERIAL, NAME = Implant_material0
*DENSITY
4.43
*ELASTIC
110000, 0.3

Any idea why this is so slow and is there a more efficient way to do this to reduce the load input file time?


Solution

  • If your ~500 materials are all of the same kind (e.g. all linear elastic isotropic mass density), then you can collapse it all into one material then define a distribution table which distributes these materials directly onto the instance element label.

    Syntax:

    (somewhere in the Part definition, under section)

    *SOLID SECTION, ELSET = ES_Implant_MAT0 ,MATERIAL=Implant_material0
    

    (somewhere in the Assembly definition; part= should reference the name of the part above)

    **  
    **
    ** ASSEMBLY
    **
    *Assembly, name=Assembly
    **  
    *Instance, name=myinstance, part=mypart
    *End Instance
    **  
    *Elset, elset=ES_Implant_MAT0, instance=myinstance
    1,2,...
    

    (somewhere in the Materials definition; see Abaqus Keywords Reference Guide for the keywords *DISTRIBUTION TABLE and *DISTRIBUTION)

    ** 
    ** MATERIALS
    ** 
    *DISTRIBUTION TABLE, NAME=IMPLANT_MATERIAL0_ELASTIC_TABLE
             MODULUS,RATIO
    *DISTRIBUTION, NAME=Implant_material0_elastic, LOCATION=element, TABLE=IMPLANT_MATERIAL0_ELASTIC_TABLE
            ,110000,0.3 # First line is some default value
    myinstance.1,110000,0.3 # syntax: instance name [dot] instance element label
    myinstance.2,110000,0.3 # these elements currently use the material properties assigned to `ELSET = ES_Implant_MAT0`. You can define the material properties belonging to other element sets in this same table, making sure you reference the element label correctly.
    ...
    *DISTRIBUTION TABLE, NAME=IMPLANT_MATERIAL0_DENSITY_TABLE
             DENSITY
    *DISTRIBUTION, NAME=Implant_material0_density, LOCATION=element, TABLE=IMPLANT_MATERIAL0_DENSITY_TABLE
            ,4.43 # Default value
    myinstance.1,4.43
    myinstance.2,4.43
    ...
    *Material, name=Implant_material0
    *Elastic
     Implant_material0_elastic # Distribution name
    *Density
     Implant_material0_density # Distribution name