28 logical temp_flag,user,submodel
31 character*80 amname(*),amplitude
32 character*81 set(*),noset
33 character*132 textpart(16)
35 integer istartset(*),iendset(*),ialset(*),iamt1(*),nmethod,
36 & nset,nk,ithermal,istep,istat,n,key,i,j,k,l,nam,ipoinpc(0:*),
37 & iamplitude,ipos,inoelfree,nk_,iline,ipol,inl,ipoinp(2,*),
38 & inp(3,*),nam_,namtot,namtot_,namta(3,*),idelay,iglobstep
40 real*8 t0(*),t1(*),temperature,tempgrad1,tempgrad2,amta(2,*),
50 write(*,*)
'*ERROR reading *TEMPERATURE: temperature' 51 write(*,*)
' loading is not allowed in a linear' 52 write(*,*)
' buckling step; perform a static' 53 write(*,*)
' nonlinear calculation instead' 58 write(*,*)
'*ERROR reading *TEMPERATURE: *TEMPERATURE' 59 write(*,*)
' should only be used within a STEP' 63 if(ithermal.ne.1)
then 64 write(*,*)
'*ERROR reading *TEMPERATURE: a *TEMPERATURE' 65 write(*,*)
' card is detected but no thermal' 66 write(*,*)
' *INITIAL CONDITIONS are given' 71 if((textpart(i).eq.
'OP=NEW').and.(.not.temp_flag))
then 75 elseif(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 76 read(textpart(i)(11:90),
'(a80)') amplitude
78 if(amname(j).eq.amplitude)
then 85 &
'*ERROR reading *TEMPERATURE: nonexistent amplitude' 92 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 95 &
'*ERROR reading *TEMPERATURE: the parameter TIME' 96 write(*,*)
' DELAY is used twice in the same' 97 write(*,*)
' keyword; ' 106 write(*,*)
'*ERROR reading *TEMPERATURE: increase nam_' 111 if(iamplitude.eq.0)
then 113 &
'*ERROR reading *TEMPERATURE: time delay must be' 114 write(*,*)
' preceded by the amplitude parameter' 117 namta(3,nam)=sign(iamplitude,namta(3,iamplitude))
122 namtot=namta(2,nam-1)
125 if(namtot.gt.namtot_)
then 126 write(*,*)
'*ERROR temperatures: increase namtot_' 131 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
133 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
135 elseif(textpart(i)(1:4).eq.
'USER')
then 137 elseif(textpart(i)(1:8).eq.
'SUBMODEL')
then 139 elseif(textpart(i)(1:5).eq.
'STEP=')
then 140 read(textpart(i)(6:15),
'(i10)',iostat=istat) iglobstep
141 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
145 &
'*WARNING reading *TEMPERATURE: parameter not recognized:' 147 & textpart(i)(1:index(textpart(i),
' ')-1)
155 if((submodel).and.(iglobstep.eq.0))
then 156 write(*,*)
'*ERROR reading *TEMPERATURE: no global step' 157 write(*,*)
' step specified for the submodel' 165 if(iamplitude.ne.0)
then 166 write(*,*)
'*WARNING reading *TEMPERATURE:' 167 write(*,*)
' no amplitude definition is allowed' 168 write(*,*)
' in combination with a submodel' 173 if(user.and.(iamplitude.ne.0))
then 175 &
'*WARNING reading *TEMPERATURE: no amplitude definition is' 176 write(*,*)
' allowed for temperatures defined by a' 177 write(*,*)
' user routine' 182 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
183 & ipoinp,inp,ipoinpc)
184 if((istat.lt.0).or.(key.eq.1))
return 185 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) temperature
186 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
191 if(user) temperature=1.2357111317d0
192 if(submodel) temperature=1.9232931374d0
194 if(inoelfree.ne.0)
then 198 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) tempgrad1
199 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
203 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) tempgrad2
204 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
209 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
212 write(*,*)
'*WARNING reading *TEMPERATURE: node ',l
213 write(*,*)
' exceeds the largest defined ',
218 if(nam.gt.0) iamt1(l)=iamplitude
219 if(inoelfree.ne.0)
then 224 read(textpart(1)(1:80),
'(a80)',iostat=istat) noset
226 ipos=index(noset,
' ')
229 if(set(i).eq.noset)
exit 233 write(*,*)
'*ERROR reading *TEMPERATURE: node set ',noset
234 write(*,*)
' has not yet been defined. ' 239 do j=istartset(i),iendset(i)
240 if(ialset(j).gt.0)
then 241 t1(ialset(j))=temperature
242 if(nam.gt.0) iamt1(ialset(j))=iamplitude
243 if(inoelfree.ne.0)
then 244 t1g(1,ialset(j))=tempgrad1
245 t1g(2,ialset(j))=tempgrad2
251 if(k.ge.ialset(j-1))
exit 253 if(nam.gt.0) iamt1(k)=iamplitude
254 if(inoelfree.ne.0)
then
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21