39 character*132 textpart(16)
41 integer nmethod,iperturb,isolver,istep,istat,n,key,i,idrct,
42 & ithermal,iline,ipol,inl,ipoinp(2,*),inp(3,*),ipoinpc(0:*),
45 real*8 tinc,tper,tmin,tmax,alpha,ctrl(*),ttime
54 if(iperturb.eq.0)
then 56 elseif((iperturb.eq.1).and.(istep.gt.1))
then 58 &
'*ERROR reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 59 write(*,*)
' perturbation analysis is not provided in a ' 60 write(*,*)
' *UNCOUPLED TEMPERATURE-DISPLACEMENT step.' 66 &
'*ERROR reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 67 write(*,*)
' *UNCOUPLED TEMPERATURE-DISPLACMENT ' 68 write(*,*)
' can only be used within a STEP' 77 elseif(isolver.eq.2)
then 78 solver(1:16)=
'ITERATIVESCALING' 79 elseif(isolver.eq.3)
then 80 solver(1:17)=
'ITERATIVECHOLESKY' 81 elseif(isolver.eq.4)
then 83 elseif(isolver.eq.5)
then 85 elseif(isolver.eq.7)
then 90 if(textpart(i)(1:6).eq.
'ALPHA=')
then 91 read(textpart(i)(7:26),
'(f20.0)',iostat=istat) alpha
92 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
93 &
"*UNCOUPLED TEMPERATURE-DISPLACEMENT%")
94 if(alpha.lt.-1.d0/3.d0)
then 95 write(*,*)
'*WARNING in dynamics: alpha is smaller' 96 write(*,*)
' than -1/3 and is reset to -1/3' 98 elseif(alpha.gt.0.d0)
then 99 write(*,*)
'*WARNING in dynamics: alpha is greater' 100 write(*,*)
' than 0 and is reset to 0' 103 elseif(textpart(i)(1:7).eq.
'SOLVER=')
then 104 read(textpart(i)(8:27),
'(a20)') solver
105 elseif((textpart(i)(1:6).eq.
'DIRECT').and.
106 & (textpart(i)(1:9).ne.
'DIRECT=NO'))
then 108 elseif(textpart(i)(1:11).eq.
'STEADYSTATE')
then 110 elseif(textpart(i)(1:7).eq.
'DELTMX=')
then 111 read(textpart(i)(8:27),
'(f20.0)',iostat=istat) ctrl(27)
112 elseif(textpart(i)(1:9).eq.
'TIMERESET')
then 114 elseif(textpart(i)(1:17).eq.
'TOTALTIMEATSTART=')
then 115 read(textpart(i)(18:37),
'(f20.0)',iostat=istat) ttime
118 &
'*WARNING in uncouptempdisps: parameter not recognized:' 120 & textpart(i)(1:index(textpart(i),
' ')-1)
122 &
"*UNCOUPLED TEMPERATURE-DISPLACEMENT%")
125 if(nmethod.eq.1) ctrl(27)=1.d30
127 if((ithermal.eq.0).and.(nmethod.ne.1).and.
128 & (nmethod.ne.2).and.(iperturb.ne.0))
then 130 &
'*ERROR reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 131 write(*,*)
' please define initial ' 132 write(*,*)
' conditions for the temperature' 138 if(solver(1:7).eq.
'SPOOLES')
then 140 elseif(solver(1:16).eq.
'ITERATIVESCALING')
then 142 elseif(solver(1:17).eq.
'ITERATIVECHOLESKY')
then 144 elseif(solver(1:3).eq.
'SGI')
then 146 elseif(solver(1:5).eq.
'TAUCS')
then 148 elseif(solver(1:7).eq.
'PARDISO')
then 152 &
'*WARNING reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 153 write(*,*)
' unknown solver;' 154 write(*,*)
' the default solver is used' 157 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
158 & ipoinp,inp,ipoinpc)
159 if((istat.lt.0).or.(key.eq.1))
then 160 if(iperturb.ge.2)
then 162 &
'*WARNING reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 163 write(*,*)
' a nonlinear analysis is requested' 164 write(*,*)
' but no time increment nor step is speci 166 write(*,*)
' the defaults (1,1) are used' 172 if(timereset)ttime=ttime-tper
173 if(nmethod.eq.4) nener=1
177 read(textpart(1)(1:20),
'(f20.0)',iostat=istat) tinc
178 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
179 &
"*UNCOUPLED TEMPERATURE-DISPLACEMENT%")
180 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) tper
181 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
182 &
"*UNCOUPLED TEMPERATURE-DISPLACEMENT%")
183 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) tmin
184 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
185 &
"*UNCOUPLED TEMPERATURE-DISPLACEMENT%")
186 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) tmax
187 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
188 &
"*UNCOUPLED TEMPERATURE-DISPLACEMENT%")
190 if(tinc.le.0.d0)
then 192 &
'*ERROR reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 193 write(*,*)
' initial increment size is 196 if(tper.le.0.d0)
then 198 &
'*ERROR reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 199 write(*,*)
' step size is negative' 201 if(tinc.gt.tper)
then 203 &
'*ERROR reading *UNCOUPLED TEMPERATURE-DISPLACEMENT:' 204 write(*,*)
' initial increment size exc 209 if(dabs(tmin).lt.1.d-6*tper)
then 210 tmin=
min(tinc,1.d-6*tper)
212 if(dabs(tmax).lt.1.d-10)
then 215 if(tinc.gt.dabs(tmax))
then 217 &
'*WARNING reading *UNCOUPLED TEMPERATURE-DISPLACEMENT' 218 write(*,*)
' the initial increment ',tinc
219 write(*,*)
' exceeds the maximum increment ',
221 write(*,*)
' the initial increment is reduced' 222 write(*,*)
' to the maximum value' 227 if(timereset)ttime=ttime-tper
229 if(nmethod.eq.4) nener=1
231 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
232 & 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