67 subroutine lfun( m,n,x,fvec,fjac,ldfjac,iflag )
85 integer m,n,iflag,ldfjac,ixbp
87 double precision x(n),fvec(m),fjac(ldfjac,n+
nsite+
nspc)
88 integer i,icalc,ierr,ise,isi,isp,ix,ixb,ixs,ixt,j,k,ld,lastsp,nj
89 double precision cgerr,fieldi,shift,snm,wdth,xtemp,dummy
90 character dashes*132,tmpnam*10,shftnd*1
91 logical shiftOK,glbscal,sppar
95 parameter(full=111,cfonly=0,zero=0.0d0)
98 double precision sshift,wtdres
100 external sshift,itrim,spcpar,hltchk,wtdres
122 if (ld.gt.132) ld=132
132 if (ld.gt.0)
write (
luttyo,1006) dashes(:ld)
138 if (ld.gt.0)
write (
luttyo,1008) dashes(:ld)
141 if (ld.gt.0)
write (
luout,1006) dashes(:ld)
147 if (ld.gt.0)
write (
luout,1008) dashes(:ld)
180 else if (iflag.eq.1)
then
208 if (hltchk(ierr,isi,ise,iflag))
return
211 if(
basno(isi,ise).gt.0)
then
219 if (
modtd(isi,ise).ne.0) icalc=full
231 if (hltchk(ierr,isi,ise,iflag))
return
240 if (ise.le.
nspc)
then
247 if (shiftok .and.
ishft(ise).ne.0)
then
258 if (dabs(shift).gt.1.0d-3*
sdb(ise))
then
262 if (hltchk(ierr,isi,ise,iflag))
return
265 if (
basno(isi,ise).gt.0)
then
276 #
ltd(isi,ise),ierr )
278 if (hltchk(ierr,isi,ise,iflag))
return
287 if (.not. glbscal)
then
382 fvec(k)=fvec(k)/
rmsn(isp)
400 else if (iflag.eq.2)
then
443 sppar=spcpar(
ixpr(ix) )
445 # (
ixst(ix).le.0 .or.
446 # (
ixst(ix).eq.isp .and. sppar) .or.
447 # (
ixst(ix).eq.isi .and. .not. sppar) ) )
then
450 if (
modtd(isi,isp).ne.0) icalc=full
453 if (hltchk(ierr,isi,isp,iflag))
return
456 if(
basno(isi,isp).gt.0)
then
468 if (hltchk(ierr,isi,isp,iflag))
return
503 fjac(j,ix)=fjac(j,ix)/
xfdstp(ix)
527 if (
iwflag.ne.0) fjac(k,nj)=fjac(k,nj)/
rmsn(isp)
538 do j=
ixsp(isp),lastsp
540 if (
iwflag.ne.0) fjac(j,nj)=fjac(j,nj)/
rmsn(isp)
556 else if (abs(iflag).eq.3)
then
584 write (
luttyo,1008) dashes(:ld)
595 1007
format(
' Itr RedChSq ',10(1x,a9))
597 1009
format(a1,i3,2x,g10.5,1x,10(f10.5))
598 1010
format(
' Itr RsdNorm ',10(1x,a9))
614 function hltchk(ierr,isite,ispec,iflag)
620 integer ierr,iflag,isite,ispec
624 if (ierr.eq.0)
return
629 if (ierr.lt.
fatal)
then
631 write (
luout,1000)
'Warning',isite,ispec,
eprerr(ierr)
633 # isite,ispec,
eprerr(ierr)
641 # .and. ierr.ne.
cghlt)
then
643 write (
luout,1000)
'Fatal err',isite,ispec,
eprerr(ierr)
645 write (
luttyo,1000)
'Fatal err',isite,ispec,
eprerr(ierr)
664 1000
format(/2x,
'*** ',a,
' site',i2,
' spctrm',i2,
': ',a)
665 1001
format(/2x,
'*** ',a)
subroutine tdchek(isite, ispc, ierr)
integer, dimension(mxvar), save ixst
double precision, dimension(mxspc), save sbi
double precision, dimension(mxpt), save tmpdat
subroutine lfun(m, n, x, fvec, fjac, ldfjac, iflag)
Subroutine for interfacing EPRLL spectral calculations with the MINPACK version of the Levenberg-Marq...
double precision, save srange
double complex, dimension(mxtdg), save alpha
double precision, dimension(mxspc), save sdb
subroutine setspc(isite, ise)
void FORTRAN() fstplt(double *y1, double *y2, double *xmin1, double *xstep1, int *indx1, int *wnum)
integer, dimension(5, mxdim), save ibasis
integer, dimension(mxspc), save nft
integer, dimension(mxspc), save ixsp
integer, dimension(mxspc), save ishft
integer, dimension(mxsite, mxspc), save basno
double precision, dimension(mxpt, mxsite), save wspec
double precision, dimension(mxspc), save tmpshft
integer, dimension(mxsite, mxspc), save modtd
double precision, dimension(mxsite, mxspc), save sfac
double precision, dimension(mxspc), save shft
double precision, save rdchsq
double precision, dimension(nfprm, mxsite), target, save fparm
subroutine momdls(fparmi, iparmi, icalc, al, be, bss, iprune, spectr, work, nft, ntotal, ierr)
Subroutine version of EPRLL family of programs. This routine is intended for use with nonlinear least...
double precision, save fnorm
double precision, dimension(mxvar), save xfdstp
integer, dimension(mxvar), save ixpr
integer, dimension(mxsite, mxspc), save ltd
integer, dimension(niprm, mxsite), target, save iparm
integer, dimension(mxsite), save iscal
integer, dimension(mxspc), save idrv
integer, dimension(mxsite, mxspc), save ixtd
integer, parameter luttyo
double precision, save ctol
logical function hltchk(ierr, isite, ispec, iflag)
Check whether a user halt (control-C) or other error has occurred during the spectral calculation and...
double precision, dimension(mxspc), save rmsn
integer, parameter mtxhlt
character *50, dimension(neperr), save eprerr
integer, dimension(mxspc), save npts
subroutine setprm(ixparm, ixsite, fval)
This file contains two routines that set a given parameter, specified by an index into the fparm or i...
double complex, dimension(mxtdg), save beta
double precision, dimension(mxpt), save tmpclc
character *9, dimension(mxjcol), save tag
subroutine sscale(data, spct, wspct, ldspct, work, nsite, npt, ctol, noneg, iscal, sfac, resid)
double precision, parameter rndoff
integer, dimension(mxtdm), save ixbas
double precision, dimension(mxpt), save work
double precision, dimension(mxpt, mxsite), save spectr