Method | Advantage | Disadvantage |
---|---|---|
CAE | GUI interface; design of complex shapes | fewer functions |
Text editor, etc. | efficient; allows for parameterized input (easy case studies: what happens if one scales down by factor); good for regular meshes | you have to think; cumbersome in 3D |
Next to the text editor, many programs exist that output Abaqus.inp files. DAMASK places additional requirements that restrict the use of some of the efficient routines that the text editor allows.
Set up your model as you are used to. There are only a few points that are specific to DAMASK as outlined below.
homogenization basic
, start the simulation and kill it right after initialization.
You can then find the number to use specified in the jobname.dat file as »maxSizePostResults«.
However, there is an even more elegant way, namely:
The script abq_addUserOutput can be used to automatically add user defined output to the input file:
> abq_addUserOutput inputfile.inpOptional parameters can be used to specify which exact information to use, see abq_addUserOutput.
You may have to modify the extension of the subroutine file from .f to .for, if the operating environment is Windows.
You can certainly also write the input file by hand or use any other preprocessing tool to create it. In any case, you have to make sure to use/activate all the features/options mentioned in the CAE section. Additionally, you have to take care that all keyword value pairs (KEYWORD=VALUE) are written without spaces around the equal sign in accordance with the »Abaqus Keywords Reference Manual«. While the Abaqus input parser accepts this, the DAMASK input file parser does not allow spaces in this context!
Without the use of DAMASK, Abaqus input files might look like in the following tutorial. Lines that start with "**" are comments and are ignored by Abaqus; lines that start with "*" are commands; lines that are entirely empty are FORBIDDEN.
First, give your problem a discription and define parameters. The usage of parameters are a benefit compared to the GUI usage, which does not have this feature. Parameters can only be used as floating point numbers: they define lengths, loads...; they cannot be used to identify node or element numbers. Parameters can be defined as function of other parameters.*heading My First Abaqus Input File ** PARAMETERS EASE YOUR WORK *parameter H_SIZE = 3.0 H_SIZE2 = H_SIZE/2.0 DISPL = H_SIZE/100000Create 18 nodes for 4 3D elements, i.e. 3x3 nodes in two layers. Here the above parameters are used. Please note that DAMASK needs 3D coordinates for the FEM nodes and DAMASK needs 3D elements. Nodes are defined as "name, x, y, z". All the nodes belong to the group "N_AREA" in this example.
**CREATE THE EIGHTEEN NODES *node, nset=N_AREA 1, 0.0, 0.0, 0.0 2, <H_SIZE2>, 0.0, 0.0 3, <H_SIZE>, 0.0, 0.0 4, 0.0, 0.5, 0.0 5, 2.0, 0.5, 0.0 6, <H_SIZE>, 0.5, 0.0 7, 0.0, 1.0, 0.0 8, <H_SIZE2>, 1.0, 0.0 9, <H_SIZE>, 1.0, 0.0 10, 0.0, 0.0, 1.0 11, <H_SIZE2>, 0.0, 1.0 12, <H_SIZE>, 0.0, 1.0 13, 0.0, 0.5, 1.0 14, 2.0, 0.5, 1.0 15, <H_SIZE>, 0.5, 1.0 16, 0.0, 1.0, 1.0 17, <H_SIZE2>, 1.0, 1.0 18, <H_SIZE>, 1.0, 1.0Define elements as "name, node1, node2, node3, node4, node5, node6, node7, node8". Remember the positive definition of nodes 1..4 and 5..6 and that nodes 5..6 are the back-plane of 1..4. These elements are of type "C3D8", i.e. eight-node elements in 3D, and all elements belong to the group "E_AREA".
**CREATE ELEMENTS *element, type=C3D8, elset=E_AREA 1, 1, 2, 5, 4, 10, 11, 14, 13 2, 2, 3, 6, 5, 11, 12, 15, 14 3, 4, 5, 8, 7, 13, 14, 17, 16 4, 5, 6, 9, 8, 14, 15, 18, 17Group some nodes into groups, as such node groups ease the application of boundary conditions. Here the node groups "BOTTOM" and "TOP" are defined and the node names are specified.
**ASSIGN (NOT CREATE, THEY EXIST ALREADY) *nset, nset=BOTTOM 1, 2, 3, 10, 11, 12 *nset, nset=TOP 7, 8, 9, 16, 17, 18Define the material: first specify that all elements of group "E_AREA" (actually all elements in this simulation) are of type steel. Then define the steel as isotropic elastic with Young's modulus and Poisson's ratio.
**DEFINE THE MATERIAL *solid section,material=STEEL,elset=E_AREA *material, name=STEEL *elastic, type=isotropic 182e3, 0.3Define the boundary conditions by specifying the name of the node group and then the directions in which to constrain motion. In this example the motion of the BOTTOM nodes is constrained in the 1-direction (=x) up to the 3-direction (=z); this means also the 2-direction (=y) is constrained. The TOP nodes are only constrained in the y-direction.
**DEFINE THE FIXED BOUNDARY CONDITIONS *boundary BOTTOM, 1, 3 *boundary TOP, 2Define the load step by identifying the maximum number of increments, the time step at the beginning of the simulation (first 1.0) and the duration of the deformation (1.0).
**START LOAD STEP *step, inc= 200 *static 1.0, 1.0Moving boundary conditions are similar to fixed boundary conditions. Note that because we only want to defined the motion in the 1-direction (=x), we have to write "TOP, 1, 1, ..". The short-hand form of this is "TOP, 1,, ..." where Abaqus assumes that only one boundary condition is prescribed.
**DEFINE MOVING BOUNDARY CONDITIONS *boundary TOP,1, ,<DISPL>Request the output first as evolution of time (line graphs of x-y type). We want to know the displacement in the x-direction (u1) and the reaction force (rf1) of the top nodes, i.e. those that are displaced by the boundary conditions.
**DEFINE DESIRED OUTPUT *output, history, frequency=10 ** OUTPUT OF TOP NODES: DISPLACEMENT AND REACTION FORCES IN X DIRECTION *node output, nset=TOP u1, rf1Then define the distribution plot, i.e. the colorful contour plots: request all stresses (s), all strains (e), and all displacements (u). Note that stresses and strains are defined for elements, while displacements only exist for nodes.
**AREA OUTPUT *output,field,freq=100 *element output,elset=E_AREA s,e *node output, nset=N_AREA uFinally, end the load step. Since no other load-steps follow, Abaqus knows that this is the last one.
*end step
**CREATE ELEMENTS *element, type=C3D8 1, 1, 2, 5, 4, 10, 11, 14, 13 2, 2, 3, 6, 5, 11, 12, 15, 14 3, 4, 5, 8, 7, 13, 14, 17, 16 4, 5, 6, 9, 8, 14, 15, 18, 17 *Elset, elset=E_AREA, generate 1, 4, 1Define the material as conventionally done in DAMASK. Compare this to the previous example: only the elastic definition changes.
**DEFINE THE MATERIAL *solid section, material=STEEL, elset=E_AREA *material, name=STEEL *depvar 49, *User Material, constants=2, unsymm 1.,1.Change the load step definition. Use the nonlinear formulation (nlgeom=YES) which causes the stiffness matrix to depend on the current configuration. Also redefine the time steps: starting with a time step of 0.1, simulate a deformation of 1.0. The minimum allowed time step is 0.001, while the maximum allowed time step is 1.0.
*step, nlgeom=YES, inc= 200 *static 0.1, 1.0, 0.001, 1.0
Run Abaqus as usual and specify the location to the DAMASK-Abaqus UMAT:
> abaqus job=Job_sx-px user=DAMASK/src/DAMASK_abaqus.f interactive
Ensure that abaqus_v6.env with the required DAMASK definitions is located in your working directory.
You can just start your simulations as you normally do, however, in this case the subroutine will be freshly compiled each time.
Alternatively, you can build an Abaqus library (see instructions in the abaqus_v6.env file distributed with DAMASK) to avoid repeated compilations.
When running a job with a pre-compiled version of DAMASK you should not specify a user subroutine file in the job definition. If you nevertheless do so, the newly compiled executable will be used instead of the library version (helpful for debugging/testing code modifications).
Parallelization can speed up simulations significantly. With DAMASK you can use internal parallelization, however, using Abaqus parallelization is not supported.
DAMASK uses OpenMP for internal parallelization. You can then set the number of threads to be used by DAMASK via the environment variable $DAMASK_NUM_THREADS.
You need to set the variable before you start CAE when using the CAE version or before you start your simulation when using the text editor.