39 character*132 textpart(16)
41 integer nmethod,istep,istat,n,key,i,iperturb,idrct,iexpl,
42 & isolver,iline,ipol,inl,ipoinp(2,*),inp(3,*),ithermal,
43 & ipoinpc(0:*),cfd,nener
45 real*8 tinc,tper,tmin,tmax,alpha,ctrl(*),tincf
48 write(*,*)
'*ERROR reading *DYNAMIC: *DYNAMIC can only' 49 write(*,*)
' be used within a STEP' 59 if(ithermal.gt.1)
then 65 if(iperturb.lt.2) iperturb=2
80 elseif(isolver.eq.2)
then 81 solver(1:16)=
'ITERATIVESCALING' 82 elseif(isolver.eq.3)
then 83 solver(1:17)=
'ITERATIVECHOLESKY' 84 elseif(isolver.eq.4)
then 86 elseif(isolver.eq.5)
then 88 elseif(isolver.eq.7)
then 93 if(textpart(i)(1:6).eq.
'ALPHA=')
then 94 read(textpart(i)(7:26),
'(f20.0)',iostat=istat) alpha
95 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
97 if(alpha.lt.-1.d0/3.d0)
then 98 write(*,*)
'*WARNING reading *DYNAMIC: alpha is smaller' 99 write(*,*)
' than -1/3 and is reset to -1/3' 101 elseif(alpha.gt.0.d0)
then 102 write(*,*)
'*WARNING reading *DYNAMIC: alpha is greater' 103 write(*,*)
' than 0 and is reset to 0' 106 elseif(textpart(i)(1:8).eq.
'EXPLICIT')
then 108 elseif((textpart(i)(1:6).eq.
'DIRECT').and.
109 & (textpart(i)(1:9).ne.
'DIRECT=NO'))
then 111 elseif(textpart(i)(1:7).eq.
'SOLVER=')
then 112 read(textpart(i)(8:27),
'(a20)') solver
115 &
'*WARNING reading *DYNAMIC: parameter not recognized:' 117 & textpart(i)(1:index(textpart(i),
' ')-1)
123 if(solver(1:7).eq.
'SPOOLES')
then 125 elseif(solver(1:16).eq.
'ITERATIVESCALING')
then 127 elseif(solver(1:17).eq.
'ITERATIVECHOLESKY')
then 129 elseif(solver(1:3).eq.
'SGI')
then 131 elseif(solver(1:5).eq.
'TAUCS')
then 133 elseif(solver(1:7).eq.
'PARDISO')
then 136 write(*,*)
'*WARNING reading *DYNAMIC: unknown solver;' 137 write(*,*)
' the default solver is used' 140 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
141 & ipoinp,inp,ipoinpc)
142 if((istat.lt.0).or.(key.eq.1))
then 143 if((iperturb.ge.2).or.(cfd.eq.1))
then 144 write(*,*)
'*WARNING reading *DYNAMIC: a nonlinear analysis i 146 write(*,*)
' but no time increment nor step is speci 148 write(*,*)
' the defaults (1,1) are used' 159 read(textpart(1)(1:20),
'(f20.0)',iostat=istat) tinc
160 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
162 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) tper
163 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
165 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) tmin
166 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
168 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) tmax
169 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
171 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) tincf
172 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
175 if(tinc.le.0.d0)
then 176 write(*,*)
'*ERROR reading *DYNAMIC: initial increment size is n 179 if(tper.le.0.d0)
then 180 write(*,*)
'*ERROR reading *DYNAMIC: step size is negative' 182 if(tinc.gt.tper)
then 183 write(*,*)
'*ERROR reading *DYNAMIC: initial increment size exce 186 if((cfd.eq.1).and.(tincf.le.0.d0))
then 187 write(*,*)
'*WARNING reading *DYNAMIC: initial CFD increment si 188 &ze is zero or negative; the default of 0.01 is taken' 193 if(dabs(tmin).lt.1.d-10*tper)
then 194 tmin=
min(tinc,1.e-10*tper)
196 if(dabs(tmax).lt.1.d-10)
then 199 if(tinc.gt.dabs(tmax))
then 200 write(*,*)
'*WARNING reading *DYNAMIC:' 201 write(*,*)
' the initial increment ',tinc
202 write(*,*)
' exceeds the maximum increment ',
204 write(*,*)
' the initial increment is reduced' 205 write(*,*)
' to the maximum value' 217 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
218 & ipoinp,inp,ipoinpc)
#define min(a, b)
Definition: cascade.c:31
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21