1!
2!     CalculiX - A 3-dimensional finite element program
3!              Copyright (C) 1998-2021 Guido Dhondt
4!
5!     This program is free software; you can redistribute it and/or
6!     modify it under the terms of the GNU General Public License as
7!     published by the Free Software Foundation(version 2);
8!
9!
10!     This program is distributed in the hope that it will be useful,
11!     but WITHOUT ANY WARRANTY; without even the implied warranty of
12!     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13!     GNU General Public License for more details.
14!
15!     You should have received a copy of the GNU General Public License
16!     along with this program; if not, write to the Free Software
17!     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18!
19      subroutine resultsmech_u(co,kon,ipkon,lakon,ne,v,
20     &  stx,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,
21     &  ielmat,ielorien,norien,orab,ntmat_,t0,t1,ithermal,prestr,
22     &  iprestr,eme,iperturb,fn,iout,qa,vold,nmethod,
23     &  veold,dtime,time,ttime,plicon,nplicon,plkcon,nplkcon,
24     &  xstateini,xstiff,xstate,npmat_,matname,mi,ielas,icmd,
25     &  ncmat_,nstate_,stiini,vini,ener,eei,enerini,istep,iinc,
26     &  reltime,calcul_fn,calcul_qa,calcul_cauchy,nener,
27     &  ikin,nal,ne0,thicke,emeini,nelem,ielprop,prop,t0g,t1g)
28!
29!     calculates nal,qa,fn,xstiff,ener,eme,eei,stx for user elements
30!
31      implicit none
32!
33      character*8 lakon(*)
34      character*80 matname(*)
35!
36      integer kon(*),mi(*),
37     &  nelcon(2,*),nrhcon(*),nalcon(2,*),ielmat(mi(3),*),
38     &  ielorien(mi(3),*),ntmat_,ipkon(*),ne0,
39     &  istep,iinc,ne,ithermal(*),iprestr,
40     &  nener,norien,iperturb(*),iout,
41     &  nal,icmd,nmethod,ielas,
42     &  ncmat_,nstate_,ikin,ielprop(*),
43     &  nplicon(0:ntmat_,*),nplkcon(0:ntmat_,*),npmat_,calcul_fn,
44     &  calcul_cauchy,calcul_qa,nelem
45!
46      real*8 co(3,*),v(0:mi(2),*),stiini(6,mi(1),*),t0g(2,*),t1g(2,*),
47     &  stx(6,mi(1),*),prop(*),
48     &  elcon(0:ncmat_,ntmat_,*),rhcon(0:1,ntmat_,*),
49     &  alcon(0:6,ntmat_,*),vini(0:mi(2),*),
50     &  alzero(*),orab(7,*),fn(0:mi(2),*),
51     &  t0(*),t1(*),prestr(6,mi(1),*),eme(6,mi(1),*),
52     &  vold(0:mi(2),*),ener(mi(1),*),eei(6,mi(1),*),enerini(mi(1),*),
53     &  veold(0:mi(2),*),qa(*),dtime,time,ttime,
54     &  plicon(0:2*npmat_,ntmat_,*),plkcon(0:2*npmat_,ntmat_,*),
55     &  xstiff(27,mi(1),*),xstate(nstate_,mi(1),*),
56     &  xstateini(nstate_,mi(1),*),reltime,
57     &  thicke(mi(3),*),emeini(6,mi(1),*)
58!
59      if(lakon(nelem)(2:2).eq.'1') then
60!
61!     user element u1 timoshenko beam
62!
63         call resultsmech_u1(co,kon,ipkon,lakon,ne,v,
64     &        stx,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,
65     &        ielmat,ielorien,norien,orab,ntmat_,t0,t1,ithermal,prestr,
66     &        iprestr,eme,iperturb,fn,iout,qa,vold,nmethod,
67     &        veold,dtime,time,ttime,plicon,nplicon,plkcon,nplkcon,
68     &        xstateini,xstiff,xstate,npmat_,matname,mi,ielas,icmd,
69     &        ncmat_,nstate_,stiini,vini,ener,eei,enerini,istep,iinc,
70     &        reltime,calcul_fn,calcul_qa,calcul_cauchy,nener,
71     &        ikin,nal,ne0,thicke,emeini,nelem,ielprop,prop,t0g,t1g)
72      elseif(lakon(nelem)(2:4).eq.'S45') then
73!
74!     user element us45 flat shell element with 4 nodes (5dof)
75!
76         call resultsmech_us45(co,kon,ipkon,lakon,ne,v,
77     &        stx,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,
78     &        ielmat,ielorien,norien,orab,ntmat_,t0,t1,ithermal,prestr,
79     &        iprestr,eme,iperturb,fn,iout,qa,vold,nmethod,
80     &        veold,dtime,time,ttime,plicon,nplicon,plkcon,nplkcon,
81     &        xstateini,xstiff,xstate,npmat_,matname,mi,ielas,icmd,
82     &        ncmat_,nstate_,stiini,vini,ener,eei,enerini,istep,iinc,
83     &        reltime,calcul_fn,calcul_qa,calcul_cauchy,nener,
84     &        ikin,nal,ne0,thicke,emeini,nelem,ielprop,prop,t0g,t1g)
85!
86       elseif(lakon(nelem)(2:3).eq.'S3') then
87!
88!     user element us3 flat shell element with 3 nodes (6dof)
89!
90         call resultsmech_us3(co,kon,ipkon,lakon,ne,v,
91     &        stx,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,
92     &        ielmat,ielorien,norien,orab,ntmat_,t0,t1,ithermal,prestr,
93     &        iprestr,eme,iperturb,fn,iout,qa,vold,nmethod,
94     &        veold,dtime,time,ttime,plicon,nplicon,plkcon,nplkcon,
95     &        xstateini,xstiff,xstate,npmat_,matname,mi,ielas,icmd,
96     &        ncmat_,nstate_,stiini,vini,ener,eei,enerini,istep,iinc,
97     &        reltime,calcul_fn,calcul_qa,calcul_cauchy,nener,
98     &        ikin,nal,ne0,thicke,emeini,nelem,ielprop,prop,t0g,t1g)
99      else
100         write(*,*) '*ERROR in resultsmech_u.f: user element'
101         write(*,*) '       ',lakon(nelem)(1:5),' is not defined'
102         call exit(201)
103      endif
104!
105      return
106      end
107