! ! CalculiX - A 3-dimensional finite element program ! Copyright (C) 1998-2007 Guido Dhondt ! ! This program is free software; you can redistribute it and/or ! modify it under the terms of the GNU General Public License as ! published by the Free Software Foundation(version 2); ! ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! subroutine mechmodel(elconloc,elas,emec,kode,emec0,ithermal, & icmd,beta,stre,xkl,ckl,vj,xikl,vij,plconloc,xstate,xstateini, & ielas,amat,t1l,dtime,time,ttime,iel,iint,nstate_,mint_, & iorien,pgauss,orab,eloc,mattyp) ! ! kode=-1: Arruda-Boyce ! -2: Mooney-Rivlin ! -3: Neo-Hooke ! -4: Ogden (N=1) ! -5: Ogden (N=2) ! -6: Ogden (N=3) ! -7: Polynomial (N=1) ! -8: Polynomial (N=2) ! -9: Polynomial (N=3) ! -10: Reduced Polynomial (N=1) ! -11: Reduced Polynomial (N=2) ! -12: Reduced Polynomial (N=3) ! -13: Van der Waals (not implemented yet) ! -14: Yeoh ! -15: Hyperfoam (N=1) ! -16: Hyperfoam (N=2) ! -17: Hyperfoam (N=3) ! -50: deformation plasticity ! -51: incremental plasticity (no viscosity) ! -52: viscoplasticity ! < -100: user material routine with -kode-100 user ! defined constants with keyword *USER MATERIAL ! implicit none ! character*80 amat ! integer kode,ithermal,icmd,ielas,iel,iint,nstate_,mint_,iorien, & mattyp ! real*8 elconloc(*),elas(21),emec(*),emec0(*),beta(*),stre(*), & ckl(*),vj,plconloc(*),t1l,xkl(*),xikl(*),vij, & dtime,didc(27),d2idc2(243),dibdc(27),d2ibdc2(243), & dudc(9),d2udc2(81),dldc(27),d2ldc2(243),dlbdc(27),d2lbdc2(243), & pgauss(3),orab(7,*),time,ttime,eloc(6) ! real*8 xstate(nstate_,mint_,*),xstateini(nstate_,mint_,*) ! if(kode.gt.0) then call linel(kode,mattyp,beta,emec,stre,elas,elconloc, & iorien,orab) elseif(kode.gt.-50) then mattyp=3 call rubber(elconloc,elas,emec,kode,emec0,didc,d2idc2, & dibdc,d2ibdc2,dudc,d2udc2,dldc,d2ldc2,dlbdc,d2lbdc2, & ithermal,icmd,beta,stre) elseif(kode.eq.-50) then mattyp=3 call defplas(elconloc,elas,emec,emec0,ithermal,icmd,beta,stre, & ckl,vj) elseif(kode.gt.-100) then mattyp=3 call incplas(elconloc,plconloc,xstate,xstateini,elas,emec, & emec0,ithermal,icmd,beta,stre,vj,kode,ielas,amat,t1l,dtime, & time,ttime,iel,iint,nstate_,mint_,eloc,pgauss) else mattyp=3 call umat_main(amat,iel,iint,kode,elconloc,emec,emec0,beta, & xikl,vij,xkl,vj,ithermal,t1l,dtime,time,ttime,icmd,ielas, & mint_,nstate_,xstateini,xstate,stre,elas,iorien,pgauss, & orab) endif ! return end