DMG in Calculix

From EVOCD
Revision as of 11:43, 18 April 2017 by Huddleston (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Purpose

This page provides the updates needed for Calculix to run large deformation codes, specifically the MSU ISV DMG model implemented in Abaqus. The process outlined here is for Linux. A similar process could be followed for Windows, though the compilation step will be different depending on the compilers used.

Building Calculix with DMG

  1. You will need to have a copy of the DMG UMAT that has been implemented for Abaqus. This guide was written based on "55p_v1p1". The steps should be similar for other versions. Save the UMAT in the "src" directory of your Calculix distribution.
  2. Two changes must be made to the UMAT
    1. Near the top of the file, change the name of the subroutine from "umat" to "umat_dmg".
    2.        subroutine umat_dmg(stress,statev,ddsdde,sse,spd,scd,
             ...
      
    3. Replace the two occurrences of "INCLUDE 'ABA_PARAM.INC'" with "IMPLICIT DOUBLE PRECISION (A-H,O-Z)"
  3. Save the Calculix wrapper UMAT without the ".txt" extension in the "src" directory of your Calculix distribution: umat_dmg_wrapper.f.
    • If you have also installed the CPFEM UMAT in your Calculix distribution, remove the helper function definitions from this file, as they are already defined in the CPFEM wrapper file. Remove everything below the line:
    • !      SUBROUTINE GET_DROT(DSTRAN,DR,DFGRD0,DFGRD1,DTIME,NTENS)
      C======================================================================+
      C----------------------------------------------------------------------+
      C----------------  Calculation of rotation increment  -----------------+
      C--------------------  for the jaumann derivative  --------------------+
      C----------------------  method of hughes-winget  ---------------------+
      C-------------------- Courtesy of Dr. Youssef Hammi  ------------------+
      C----------------------------------------------------------------------+
      C======================================================================+
      
  4. Add these two lines to "src/Makefile.inc" in alphabetical order if you wish, or anywhere in the list of files:
  5. umat_dmg_55p_v1p1.f \
    umat_dmg_wrapper.f \
    
  6. Add the following snippet to "src/umat_main.f" of your Calculix distribution to add the DMG material to Calculix. These lines can go anywhere in the large if/else statement. You can put it right before the "else" statement.
  7.       elseif(amat(1:3).eq.'DMG') then
             amatloc(1:77)=amat(4:80)
             amatloc(78:80)='   '
             call umat_dmg_wrapper(amat,iel,iint,kode,elconloc,emec,
         &        emec0,
         &        beta,xikl,vij,xkl,vj,ithermal,t1l,dtime,time,ttime,
         &        icmd,ielas,mi,nstate_,xstateini,xstate,stre,stiff,
         &        iorien,pgauss,orab,istep,iinc,pnewdt)
    
  8. From the "src" directory of your Calculix distribution, type:
  9. make
  10. The "ccx_*" executable should now have the DMG model available. To use it, begin your material name with "DMG" and specify the constants just as you would in Abaqus.
Personal tools
Namespaces

Variants
Actions
home
Materials
Material Models
Design
Resources
Projects
Education
Toolbox