38 character*132 textpart(16)
40 integer nmethod,iperturb,isolver,istep,istat,n,key,i,idrct,nev,
41 & ithermal,iline,ipol,inl,ipoinp(2,*),inp(3,*),mei(4),ncv,mxiter,
42 & ipoinpc(0:*),idirect
44 real*8 tinc,tper,tmin,tmax,alpha,fei(3),tol,fmin,fmax,ctrl(*),
59 if(iperturb.eq.0)
then 61 elseif((iperturb.eq.1).and.(istep.gt.1))
then 62 write(*,*)
'*ERROR in heattransfers: perturbation analysis is' 63 write(*,*)
' not provided in a *HEAT TRANSFER step.' 68 write(*,*)
'*ERROR in heattransfers: *HEAT TRANSFER can only' 69 write(*,*)
' be used within a STEP' 78 elseif(isolver.eq.2)
then 79 solver(1:16)=
'ITERATIVESCALING' 80 elseif(isolver.eq.3)
then 81 solver(1:17)=
'ITERATIVECHOLESKY' 82 elseif(isolver.eq.4)
then 84 elseif(isolver.eq.5)
then 86 elseif(isolver.eq.7)
then 92 if(textpart(i)(1:7).eq.
'SOLVER=')
then 93 read(textpart(i)(8:27),
'(a20)') solver
94 elseif((textpart(i)(1:6).eq.
'DIRECT').and.
95 & (textpart(i)(1:9).ne.
'DIRECT=NO'))
then 97 elseif(textpart(i)(1:9).eq.
'DIRECT=NO')
then 99 elseif(textpart(i)(1:11).eq.
'STEADYSTATE')
then 101 elseif(textpart(i)(1:9).eq.
'FREQUENCY')
then 103 elseif(textpart(i)(1:12).eq.
'MODALDYNAMIC')
then 105 elseif(textpart(i)(1:11).eq.
'STORAGE=YES')
then 107 elseif(textpart(i)(1:7).eq.
'DELTMX=')
then 108 read(textpart(i)(8:27),
'(f20.0)',iostat=istat) ctrl(27)
109 elseif(textpart(i)(1:9).eq.
'TIMERESET')
then 111 elseif(textpart(i)(1:17).eq.
'TOTALTIMEATSTART=')
then 112 read(textpart(i)(18:37),
'(f20.0)',iostat=istat) ttime
115 &
'*WARNING in heattransfers: parameter not recognized:' 117 & textpart(i)(1:index(textpart(i),
' ')-1)
122 if(nmethod.eq.1) ctrl(27)=1.d30
127 if(iperturb.eq.0)
then 129 if(idirect.eq.0)idrct=0
132 if(idirect.eq.1)idrct=1
135 if((ithermal.eq.0).and.(nmethod.ne.1).and.
136 & (nmethod.ne.2).and.(iperturb.ne.0))
then 137 write(*,*)
'*ERROR in heattransfers: please define initial ' 138 write(*,*)
' conditions for the temperature' 144 if((nmethod.ne.2).and.(iperturb.ne.0))
then 148 if(solver(1:7).eq.
'SPOOLES')
then 150 elseif(solver(1:16).eq.
'ITERATIVESCALING')
then 152 elseif(solver(1:17).eq.
'ITERATIVECHOLESKY')
then 154 elseif(solver(1:3).eq.
'SGI')
then 156 elseif(solver(1:5).eq.
'TAUCS')
then 158 elseif(solver(1:7).eq.
'PARDISO')
then 161 write(*,*)
'*WARNING in heattransfers: unknown solver;' 162 write(*,*)
' the default solver is used' 165 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
166 & ipoinp,inp,ipoinpc)
167 if((istat.lt.0).or.(key.eq.1))
then 168 if(iperturb.ge.2)
then 169 write(*,*)
'*WARNING in heattransfers: a nonlinear geomet 170 &ric analysis is requested' 171 write(*,*)
' but no time increment nor step is sp 173 write(*,*)
' the defaults (1,1) are used' 179 if(timereset)ttime=ttime-tper
183 read(textpart(1)(1:20),
'(f20.0)',iostat=istat) tinc
184 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
186 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) tper
187 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
189 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) tmin
190 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
192 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) tmax
193 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
196 if(tinc.le.0.d0)
then 197 write(*,*)
'*ERROR in heattransfers: initial increment size 200 if(tper.le.0.d0)
then 201 write(*,*)
'*ERROR in heattransfers: step size is negative' 203 if(tinc.gt.tper)
then 204 write(*,*)
'*ERROR in heattransfers: initial increment size 211 if(dabs(tmin).lt.1.d-6*tper)
then 212 tmin=
min(tinc,1.d-6*tper)
214 if(dabs(tmax).lt.1.d-10)
then 218 elseif(nmethod.eq.2)
then 224 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
225 & ipoinp,inp,ipoinpc)
226 if((istat.lt.0).or.(key.eq.1))
then 227 write(*,*)
'*ERROR in heattransfers: definition not complete' 233 read(textpart(1)(1:10),
'(i10)',iostat=istat) nev
234 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
237 write(*,*)
'*ERROR in frequencies: less than 1 eigenvalue re 245 if(textpart(2)(1:1).ne.
' ')
then 246 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) fmin
247 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
250 if(textpart(3)(1:1).ne.
' ')
then 251 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) fmax
252 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
267 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
268 & ipoinp,inp,ipoinpc)
269 if((istat.lt.0).or.(key.eq.1))
then 270 write(*,*)
'*ERROR in heattransfers: definition not complete' 276 read(textpart(1)(1:20),
'(f20.0)',iostat=istat) tinc
277 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
279 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) tper
280 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
284 if(timereset)ttime=ttime-tper
286 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
287 & 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