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 restarts(istep,nset,nload,nforc, nboun,nk,ne,
20     &  nmpc,nalset,nmat,ntmat_,npmat_,norien,nam,nprint,mi,
21     &  ntrans,ncs_,namtot,ncmat_,mpcfree,maxlenmpc,
22     &  ne1d,ne2d,nflow,nlabel,iplas,
23     &  nkon,ithermal,nmethod,iperturb,nstate_,nener,set,istartset,
24     &  iendset,ialset,co,kon,ipkon,lakon,nodeboun,ndirboun,iamboun,
25     &  xboun,ikboun,ilboun,ipompc,nodempc,coefmpc,labmpc,ikmpc,ilmpc,
26     &  nodeforc,ndirforc,iamforc,xforc,ikforc,ilforc,nelemload,iamload,
27     &  sideload,xload,elcon,nelcon,rhcon,nrhcon,
28     &  alcon,nalcon,alzero,plicon,nplicon,plkcon,nplkcon,orname,orab,
29     &  ielorien,trab,inotr,amname,amta,namta,t0,t1,iamt1,veold,
30     &  ielmat,matname,prlab,prset,filab,vold,nodebounold,
31     &  ndirbounold,xbounold,xforcold,xloadold,t1old,eme,
32     &  iponor,xnor,knor,thicke,offset,iponoel,inoel,rig,
33     &  shcon,nshcon,cocon,ncocon,ics,sti,
34     &  ener,xstate,jobnamec,infree,irstrt,inpc,textpart,istat,n,
35     &  key,prestr,iprestr,cbody,ibody,xbody,nbody,xbodyold,
36     &  ttime,qaold,cs,mcs,output,physcon,ctrl,typeboun,iline,ipol,inl,
37     &  ipoinp,inp,fmpc,tieset,ntie,tietol,ipoinpc,nslavs,t0g,t1g,nprop,
38     &  ielprop,prop,mortar,nintpoint,ifacecount,islavsurf,pslavsurf,
39     &  clearini,ier,vel,nef,velo,veloo,ne2boun,heading,network,
40     &  irestartread)
41!
42      implicit none
43!
44      character*1 typeboun(*),inpc(*)
45      character*4 output
46      character*6 prlab(*)
47      character*8 lakon(*)
48      character*20 labmpc(*),sideload(*)
49      character*66 heading(*)
50      character*80 orname(*),amname(*),matname(*)
51      character*81 set(*),prset(*),tieset(3,*),cbody(*)
52      character*87 filab(*)
53      character*132 jobnamec(*),textpart(16)
54!
55      integer istep,nset,nload,nforc,nboun,nk,ne,nmpc,nalset,nmat,
56     &  ntmat_,npmat_,norien,nam,nprint,mi(*),ntrans,ncs_,
57     &  namtot,ncmat_,mpcfree,ne1d,ne2d,nflow,nlabel,iplas,nkon,
58     &  ithermal(*),nmethod,iperturb(*),nstate_,istartset(*),iendset(*),
59     &  ialset(*),kon(*),ipkon(*),nodeboun(*),ndirboun(*),iamboun(*),
60     &  ikboun(*),ilboun(*),ipompc(*),nodempc(*),ikmpc(*),ilmpc(*),
61     &  nodeforc(*),ndirforc(*),iamforc(*),ikforc(*),ilforc(*),
62     &  nelemload(*),iamload(*),nelcon(*),ipoinpc(0:*),
63     &  nrhcon(*),nalcon(*),nplicon(*),nplkcon(*),ielorien(*),
64     &  inotr(*),nprop,ielprop(*),mortar,nintpoint,ifacecount,
65     &  namta(*),iamt1(*),ielmat(*),nodebounold(*),ndirbounold(*),
66     &  iponor(*),knor(*),iponoel(*),inoel(*),rig(*),islavsurf(*),
67     &  nshcon(*),ncocon(*),ics(*),infree(*),ier,network,
68     &  nener,irestartstep,irestartread,irstrt(*),istat,n,i,key,
69     &  iprestr,mcs,maxlenmpc,iline,ipol,inl,
70     &  ipoinp(2,*),inp(3,*),ntie,ibody(*),nbody,nslavs,nef,
71     &  ne2boun(2,*)
72!
73      real*8 co(*),xboun(*),coefmpc(*),xforc(*),xload(*),elcon(*),
74     &  rhcon(*),alcon(*),alzero(*),plicon(*),plkcon(*),orab(*),
75     &  trab(*),amta(*),t0(*),t1(*),prestr(*),veold(*),tietol(*),
76     &  vold(*),xbounold(*),xforcold(*),xloadold(*),t1old(*),eme(*),
77     &  xnor(*),thicke(*),offset(*),t0g(*),t1g(*),clearini(*),
78     &  shcon(*),cocon(*),sti(*),ener(*),xstate(*),prop(*),
79     &  ttime,qaold(2),cs(17,*),physcon(*),pslavsurf(*),
80     &  ctrl(*),fmpc(*),xbody(*),xbodyold(*),vel(*),velo(*),veloo(*)
81!
82c      irestartread=0
83      irestartstep=0
84!
85      do i=2,n
86         if(textpart(i)(1:4).eq.'READ') then
87            irestartread=1
88         elseif(textpart(i)(1:5).eq.'STEP=') then
89            read(textpart(i)(6:15),'(i10)',iostat=istat) irestartstep
90            if(istat.gt.0) then
91               call inputerror(inpc,ipoinpc,iline,
92     &              "*RESTART%",ier)
93               return
94            endif
95         elseif(textpart(i)(1:5).eq.'WRITE') then
96            irstrt(1)=1
97         elseif(textpart(i)(1:10).eq.'FREQUENCY=') then
98            read(textpart(i)(11:20),'(i10)',iostat=istat) irstrt(1)
99            if(istat.gt.0) then
100               call inputerror(inpc,ipoinpc,iline,
101     &              "*RESTART%",ier)
102               return
103            endif
104         elseif(textpart(i)(1:7).eq.'OVERLAY') then
105            irstrt(2)=1
106         else
107            write(*,*)
108     &        '*WARNING in restarts: parameter not recognized:'
109            write(*,*) '         ',
110     &                 textpart(i)(1:index(textpart(i),' ')-1)
111            call inputwarning(inpc,ipoinpc,iline,
112     &"*RESTART%")
113         endif
114      enddo
115!
116      if(irestartread.eq.1) then
117        call restartread(istep,nset,nload,nforc, nboun,nk,ne,
118     &  nmpc,nalset,nmat,ntmat_,npmat_,norien,nam,nprint,mi,
119     &  ntrans,ncs_,namtot,ncmat_,mpcfree,maxlenmpc,
120     &  ne1d,ne2d,nflow,nlabel,iplas,
121     &  nkon,ithermal,nmethod,iperturb,nstate_,nener,set,istartset,
122     &  iendset,ialset,co,kon,ipkon,lakon,nodeboun,ndirboun,iamboun,
123     &  xboun,ikboun,ilboun,ipompc,nodempc,coefmpc,labmpc,ikmpc,ilmpc,
124     &  nodeforc,ndirforc,iamforc,xforc,ikforc,ilforc,nelemload,iamload,
125     &  sideload,xload,elcon,nelcon,rhcon,nrhcon,
126     &  alcon,nalcon,alzero,plicon,nplicon,plkcon,nplkcon,orname,orab,
127     &  ielorien,trab,inotr,amname,amta,namta,t0,t1,iamt1,veold,
128     &  ielmat,matname,prlab,prset,filab,vold,nodebounold,
129     &  ndirbounold,xbounold,xforcold,xloadold,t1old,eme,
130     &  iponor,xnor,knor,thicke,offset,iponoel,inoel,rig,
131     &  shcon,nshcon,cocon,ncocon,ics,sti,
132     &  ener,xstate,jobnamec,infree,irestartstep,prestr,iprestr,
133     &  cbody,ibody,xbody,nbody,xbodyold,ttime,qaold,cs,mcs,
134     &  output,physcon,ctrl,typeboun,fmpc,tieset,ntie,tietol,nslavs,
135     &  t0g,t1g,nprop,ielprop,prop,mortar,nintpoint,ifacecount,
136     &  islavsurf,pslavsurf,clearini,irstrt,vel,nef,velo,veloo,
137     &  ne2boun,heading,network)
138      endif
139!
140      call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
141     &     ipoinp,inp,ipoinpc)
142!
143      return
144      end
145
146
147