34 logical user,fixed,surface
36 character*1 typeboun(*),
type,inpc(*)
38 character*20 labmpc(*),sideload(*)
39 character*80 amname(*),amplitude
40 character*81 set(*),elset
41 character*132 textpart(16)
43 integer istartset(*),iendset(*),ialset(*),nodeboun(*),
44 & ndirboun(*),iface,nload,nelemload(2,*),kon(*),ipkon(*),
45 & nset,nboun,nboun_,istat,n,i,j,k,l,ibounstart,ibounend,
46 & key,nk,iamboun(*),nam,iamplitude,ipompc(*),nodempc(3,*),
47 & nmpc,nmpc_,mpcfree,ikboun(*),ilboun(*),ikmpc(*),
48 & ilmpc(*),ntrans,nk_,ipos,m,ne,
49 & iline,ipol,inl,ipoinp(2,*),inp(3,*),nam_,namtot,namtot_,
50 & namta(3,*),idelay,nmethod,iperturb,ipoinpc(0:*),
53 real*8 xboun(*),bounval,coefmpc(*),trab(7,*),co(3,*),amta(2,*),
54 & vold(0:mi(2),*),xload(2,*)
64 if(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 65 read(textpart(i)(11:90),
'(a80)') amplitude
67 if(amname(j).eq.amplitude)
then 74 &
'*ERROR reading *BOUNDARYF: nonexistent amplitude' 81 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 83 write(*,*)
'*ERROR reading *BOUNDARYF: the parameter TIME' 84 write(*,*)
' DELAY is used twice in the same' 85 write(*,*)
' keyword; ' 94 write(*,*)
'*ERROR reading *BOUNDARYF: increase nam_' 99 if(iamplitude.eq.0)
then 100 write(*,*)
'*ERROR reading *BOUNDARYF: time delay must be' 101 write(*,*)
' preceded by the amplitude parameter' 104 namta(3,nam)=sign(iamplitude,namta(3,iamplitude))
109 namtot=namta(2,nam-1)
112 if(namtot.gt.namtot_)
then 113 write(*,*)
'*ERROR boundaries: increase namtot_' 118 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
120 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
122 elseif(textpart(i)(1:4).eq.
'USER')
then 126 &
'*WARNING reading *BOUNDARYF: parameter not recognized:' 128 & textpart(i)(1:index(textpart(i),
' ')-1)
134 if(user.and.(iamplitude.ne.0))
then 135 write(*,*)
'*WARNING: no amplitude definition is allowed' 136 write(*,*)
' for temperatures defined by a' 137 write(*,*)
' user routine' 142 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
143 & ipoinp,inp,ipoinpc)
144 if((istat.lt.0).or.(key.eq.1))
return 146 read(textpart(3)(1:10),
'(i10)',iostat=istat) ibounstart
147 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
150 if(textpart(4)(1:1).eq.
' ')
then 153 read(textpart(4)(1:10),
'(i10)',iostat=istat) ibounend
154 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
158 if(textpart(5)(1:1).eq.
' ')
then 161 read(textpart(5)(1:20),
'(f20.0)',iostat=istat) bounval
162 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
168 if(user) bounval=1.2357111317d0
170 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
172 if((l.gt.ne).or.(l.le.0))
then 173 write(*,*)
'*ERROR reading *BOUNDARYF:' 174 write(*,*)
' element ',l,
' is not defined' 177 read(textpart(2)(2:2),
'(i1)',iostat=istat) iface
178 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
181 call bounaddf(l,ibounstart,ibounend,bounval,
182 & nodeboun,ndirboun,xboun,nboun,nboun_,
183 & iamboun,iamplitude,nam,ipompc,nodempc,
184 & coefmpc,nmpc,nmpc_,mpcfree,trab,
185 & ntrans,ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,labmpc,
186 &
type,typeboun,nmethod,iperturb,vold,mi,
187 & nelemload,sideload,xload,nload,lakon,ipkon,kon)
189 read(textpart(1)(1:80),
'(a80)',iostat=istat) elset
191 ipos=index(elset,
' ')
194 if(set(i).eq.elset)
exit 203 if(set(i).eq.elset)
exit 207 write(*,*)
'*ERROR reading *BOUNDARYF: surface ',elset
208 write(*,*)
' has not yet been defined. ' 214 read(textpart(2)(2:2),
'(i1)',iostat=istat) iface
215 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
217 do j=istartset(i),iendset(i)
218 if(ialset(j).gt.0)
then 220 if(.not.surface) k=10*k+iface
221 call bounaddf(k,ibounstart,ibounend,bounval,
222 & nodeboun,ndirboun,xboun,nboun,nboun_,
223 & iamboun,iamplitude,nam,ipompc,nodempc,
224 & coefmpc,nmpc,nmpc_,mpcfree,trab,
225 & ntrans,ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,labmpc,
226 &
type,typeboun,nmethod,iperturb,vold,mi,
227 & nelemload,sideload,xload,nload,lakon,ipkon,kon)
232 if(m.ge.ialset(j-1))
exit 234 call bounaddf(k,ibounstart,ibounend,bounval,
235 & nodeboun,ndirboun,xboun,nboun,nboun_,
236 & iamboun,iamplitude,nam,ipompc,nodempc,
237 & coefmpc,nmpc,nmpc_,mpcfree,trab,
238 & ntrans,ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,
239 & labmpc,
type,typeboun,nmethod,iperturb,
241 & nelemload,sideload,xload,nload,lakon,ipkon,kon)
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine bounaddf(iface, is, ie, val, nodeboun, ndirboun, xboun, nboun, nboun_, iamboun, iamplitude, nam, ipompc, nodempc, coefmpc, nmpc, nmpc_, mpcfree, trab, ntrans, ikboun, ilboun, ikmpc, ilmpc, co, nk, nk_, labmpc, type, typeboun, nmethod, iperturb, vold, mi, nelemload, sideload, xload, nload, lakon, ipkon, kon)
Definition: bounaddf.f:25