37       character*132 textpart(16)
    39       integer nmethod,iperturb,isolver,istep,istat,n,key,i,idrct,
    40      &  iline,ipol,inl,ipoinp(2,*),inp(3,*),ipoinpc(0:*),nelcon(2,*),
    43       real*8 tinc,tper,tmin,tmax,ctrl(*)
    49       if((iperturb.eq.1).and.(istep.gt.1)) 
then    50          write(*,*) 
'*ERROR reading *VISCO: perturbation analysis is'    51          write(*,*) 
'       not provided in a *VISCO step. Perform'    52          write(*,*) 
'       a genuine nonlinear geometric calculation'    53          write(*,*) 
'       instead (parameter NLGEOM)'    58          write(*,*) 
'*ERROR reading *VISCO: *VISCO can only be used'    59          write(*,*) 
'  within a STEP'    68       elseif(isolver.eq.2) 
then    69          solver(1:16)=
'ITERATIVESCALING'    70       elseif(isolver.eq.3) 
then    71          solver(1:17)=
'ITERATIVECHOLESKY'    72       elseif(isolver.eq.4) 
then    74       elseif(isolver.eq.5) 
then    76       elseif(isolver.eq.7) 
then    81          if(textpart(i)(1:7).eq.
'SOLVER=') 
then    82             read(textpart(i)(8:27),
'(a20)') solver
    83          elseif((textpart(i)(1:6).eq.
'DIRECT').and.
    84      &          (textpart(i)(1:9).ne.
'DIRECT=NO')) 
then    86          elseif(textpart(i)(1:6).eq.
'CETOL=') 
then    87             read(textpart(i)(7:26),
'(f20.0)',iostat=istat) ctrl(40)
    88             if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
    92      &        
'*WARNING reading *VISCO: parameter not recognized:'    94      &                 textpart(i)(1:index(textpart(i),
' ')-1)
   100       if(ctrl(40).le.0.d0) 
then   101          write(*,*) 
'*ERROR reading *VISCO:'   102          write(*,*) 
'       no strictly positive value'   103          write(*,*) 
'       for the parameter CETOL given'   107       if(solver(1:7).eq.
'SPOOLES') 
then   109       elseif(solver(1:16).eq.
'ITERATIVESCALING') 
then   111       elseif(solver(1:17).eq.
'ITERATIVECHOLESKY') 
then   113       elseif(solver(1:3).eq.
'SGI') 
then   115       elseif(solver(1:5).eq.
'TAUCS') 
then   117       elseif(solver(1:7).eq.
'PARDISO') 
then   120          write(*,*) 
'*WARNING reading *VISCO: unknown solver;'   121          write(*,*) 
'         the default solver is used'   126       call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
   127      &     ipoinp,inp,ipoinpc)
   128       if((istat.lt.0).or.(key.eq.1)) 
then   129          if(iperturb.ge.2) 
then   130             write(*,*) 
'*WARNING reading *VISCO: a nonlinear analysis is   132             write(*,*) 
'         but no time increment nor step is speci   134             write(*,*) 
'         the defaults (1,1) are used'   143       read(textpart(1)(1:20),
'(f20.0)',iostat=istat) tinc
   144       if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
   146       read(textpart(2)(1:20),
'(f20.0)',iostat=istat) tper
   147       if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
   149       read(textpart(3)(1:20),
'(f20.0)',iostat=istat) tmin
   150       if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
   152       read(textpart(4)(1:20),
'(f20.0)',iostat=istat) tmax
   153       if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
   156       if(tinc.le.0.d0) 
then   157          write(*,*) 
'*ERROR reading *VISCO: initial increment size is ne   160       if(tper.le.0.d0) 
then   161          write(*,*) 
'*ERROR reading *VISCO: step size is negative'   163       if(tinc.gt.tper) 
then   164          write(*,*) 
'*ERROR reading *VISCO: initial increment size excee   169          if(dabs(tmin).lt.1.d-6*tper) 
then   170             tmin=
min(tinc,1.d-6*tper)
   172          if(dabs(tmax).lt.1.d-10) 
then   174          if(tinc.gt.dabs(tmax)) 
then   175             write(*,*) 
'*WARNING reading *VISCO:'   176             write(*,*) 
'         the initial increment ',tinc
   177             write(*,*) 
'         exceeds the maximum increment ',
   179             write(*,*) 
'         the initial increment is reduced'   180             write(*,*) 
'         to the maximum value'   186       call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
   187      &     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