R. Ghosh March 2013 <
This note describes version 8.0 of fitfun
Summary
Fitfun is a fitting library written in Fortran77 for non-linear least squares fitting of data to parametrised models.
The programmer must supply a MAIN routine (essentially to name parameters and scales,
a data read routine, and a calculation routine. Fitfun then minimises the difference between
the model and data by adjusting the values of the parameters. It can also obtain read-in control
instructions from a data file allowing it to treat a sequence of data. The principal routine is
ftfuns which sets up and calls the other functions. To allow for easy extension
almost all useful variables are held in COMMON in ftfuns which thus helps a
maintainer identify the variable and its use.
PARAMETER (MAXDAT=21000)
c***** maximum no of input data
PARAMETER (MAXPAR=40)
c***** maximum number of parameters
PARAMETER (MAXPAT=4000)
c***** sequences
EXTERNAL READIN,CALSUB
read-in and calculation routines
COMMON blocks likely to be used in READIN and CALSUB
common/guiuse/ignum,insta,iosta,irsta
Controls communications with clickfit
common/comin/bufin
character*150
with data from clickfit
ftfuns,ftprld.fttcmd,ftvall
common/reply/resout
ftfuns,ftfffff,ftglnk,ftprld,ftdatn
reply to clickfit - error message starts with ERR:
COMMON/TITLES/INAMES(MAXPAR),NX,NY
used in ftfuns,forfit,ftlist,ftprld,ftvals
contains the name of each parameter
COMMON/REDINC/DFIND
ftfuns,mread
character*80 string for input routine to find data
COMMON/REDIT4/OBS4IN(MAXDAT)
ftdatn,mread
fourth column is left here by READIN
COMMON/OBSDA4/USE4(MAXDAT)
ftfuns,ftlimt,ftlist
contains fourth column input for calculation
Internal fitfun COMMON blocks
COMMON/LIMITF/ VERZHN,MAXIND,MAXPNM
ftfuns
COMMON/TITLEP/NPARAS
used in ftfuns,forfit,ftgetp,ftglnk,ftlist,ftumap
COMMON/FUNCTS/NAMSS
ftfuns
COMMON/WORK/W
used in ftfuns,ftlist
workspace for fits, contains deviations after fits
COMMON/EXTPLT/XPL(200),YPL(200),WERR(200),
1WRK(200),WRK1(200),INDPX(200),
1INDTMP(MAXDAT),NEXTRA
ftfuns,ftlimt,ftlist,ftxset
COMMON/EXPLT4/XDVL(200)
ftfuns
COMMON/FLAGS/ DATSET,PARSET,NEWDAT,PLTSET
ftfuns,ftcalf,ftdatn,fteras,ftffff,ftlimt,ftlist,ftvals,ftxset
logical flags for status of read-in etc.
COMMON/FLAGS4/INCOL4
ftfuns.ftlimt,ftxset
set in READIN if fourth column is available
COMMON/TIN/INTTY,IOTTY,NMO,IERT,VARIN(10)
ftfuns,ftcalf,ftextp,ftffff,ftgech,ftglnk,ftlimt,ftlist,
ftplfl,ftttcmd,ftvals,ftxset,ftyset
terminal input and free format results
COMMON/TINC/PNAMM,RET(80)
ftfuns,ftcalf,ftextp,ftffff,ftgech,ftglnk,ftlimt,ftlist,
ftplfl,ftttcmd,ftvals,ftxset,ftyset
program name and stripped input buffer from terminal
COMMON/FUNCTN/NPAR,PARM,STEP,SCALE,NUPAR
ftfuns,forfit,ftcalf,ftlist
internal parameters in fitting
COMMON/FUNCTC/NAMES
ftfuns,forfit,ftcalf,ftlist,ftprld,ftsave
derived parameter names
COMMON/CNSTRN/IINDEX(MAXPAR)
ftfuns,ftcalf,ftffff,ftlist
maps parameters to fitted variables
COMMON/REDITC/ XOBS,YOBS,YROBS,YER,NDIN
ftfuns,ftxset
contains the raw data read from the user routine READIN
COMMON/OBSDAT/ NPNT,XUSE,YUSE,YUSR
ftfuns,ftlist
contains the data to be fitted in the user routine CALSUB
COMMON/CALDAT/YCALC,F,IITER
ftfuns,ftcalf,ftlist
results from fitting
COMMON/FITCON/H,DMAX,ACC,FUNMAX,VPRINT
ftfuns,forfit,ftffff,ftlist,ftprld,ftsave,ftvall,ftvals
fitting control parameters
COMMON/FITLIM/XLIMS(6),NSET,MINF,MAXF,NFIT
ftfuns,forfit,ftcalf,ftffff,ftlimt,ftlist,ftprld,ftsave,ftvall,ftvals,ftxset
exclusion zones for fits
COMMON/SPLTC/VARS(32)
ftfuns,ftcalf,ftlist,rsplt,tdlmr(/i>
graphical control
COMMON/PLTLIM/XMIN,XMAX,YMIN,YMAX,XSCALE(2),YSCALE(2)
ftfuns,ftdatn,ftlist,ftplfl,ftprld,ftsave,ftvall,ftvals,ftxset,ftyset
plotting scale limits
COMMON/PLTLIC/NTX,NTY,NTEX
ftfuns,ftdatn,ftlimt,ftlist,ftplfl,ftvall,ftvals
plot titles
COMMON/PLTFLE/PLFILE
ftfuns,ftplfl
plot file name
COMMON/PLTFILD/XFL(200),YFL(200)
ftfuns
plot file calculated values
COMMON/ERRORC/SDEV(MAXPAR),SDEW(MAXPAR)
1,COVAR(MAXPAR*MAXPAR),COVAW(MAXPAR*MAXPAR),IPAR
ftfuns,ftffff,ftlist,ftprld,ftvall,ftvals
deviations after fitting
COMMON/TEKENV/TEKTRO
ftfuns,fteras,fthelp,ftlist,ftvall,ftvals
controls scrolling
COMMON/TITLEX/EXTRAT
ftfuns,ftlist
COMMON/TITLEI/IEXTRT
ftfuns,
additional title on graph
COMMON/CHICHI/RF,RFOLD,CHI,CHIOLD,PROB,NFREE,NFITNO
ftfuns,ftchsq,ftdatn,ftlist
statistical test
COMMON/FCLOSE/ICLOSE,ISTART
ftfuns
control re-entry without re-reading parameters etc.
COMMON/STOPCY/IXV
ftfuns
variable is non-zero after control-c is given
COMMON/FILIN/INDEX1,INDEX2,IFLAG1,IFLAG2
ftfuns
COMMON/FILINC/FTXT
(i>ftfuns
COMMON/QUIET/KQUIET
ftfuns,ftffff
COMMON/COMNAM/COMCMD,COMREP,COMINF
ftfuns
LOGICAL CHAR,TEKTRO,RETRUN
LOGICAL DATSET,PARSET,NEWDAT,PLTSET,INCOL4
CHARACTER*1 COMM(20),ANS
CHARACTER PNAMM*4,RET*1
CHARACTER*4 PNAME,PNAM,PARFR,UNSET,VERSHN,VPRINT
CHARACTER PLFILE*10,LOGFIL*10,STR*30,PLFILX*10
CHARACTER PARFL*4
CHARACTER PARFLL*20
CHARACTER FTXT*120
COMMON/VERSION/VERP,VERS
CHARACTER*8 INAMES,NAMES(MAXPAR)
CHARACTER*20 NX,NY,NTX,NTY
CHARACTER*50 NTEX,EXTRAT
CHARACTER*8 FITNO
CHARACTER*80 DFIND
CHARACTER*11 COMCMD,COMREP,COMINF
CHARACTER*80 RESOUT
CHARACTER*20 TM
C
DIMENSION FITPAR(MAXPAR),DD(2)
DIMENSION F(MAXDAT),W(200000)
DIMENSION XOBS(MAXDAT),YOBS(MAXDAT),YROBS(MAXDAT),YCALC(MAXDAT)
1,XUSE(MAXDAT),YUSE(MAXDAT),YER(MAXDAT),YUSR(MAXDAT)
DIMENSION PARM(MAXPAR),STEP(MAXPAR),SCALE(MAXPAR),OLD(MAXPAR)
DIMENSION FITDIF(MAXDAT)
DIMENSION USE4(MAXDAT),OBS4(MAXDAT)
DIMENSION UUSE4(MAXDAT)
Principal Routines
forfit.for allows initial paramters to be setup if no ffm file is found
ftcalf.for calls the calculation routine CALSUB
ftchsq.for evaluates CHI-squared if errors are provided in data
ftdatn.for calls the readin routine MYREAD
fteras.for clears graphics and text
ftextp.for external routine (dummy in library)
ftfdcd.for free-format input routine
ftffff.for sets up fitting
ftfuns.for MAIN STEERING ROUTINE
ftgech.for reads in terminal input
ftgetp.for gets parameters for a specified data set
fthelp.for help information
ftlimt.for places data in arrays for fitting and plotting in limits
ftlist.for outputs listing
ftmb11.for matrix inversion for fitting
ftplfl.for outputs data in file for subsequent plotting
ftplnm.for plots sets of data
ftplst.for plots sets of data
ftprob.for calculates probability of fit at minimum
ftpval.for mapping of parametrs to inputs sets
ftsave.for saves current parameters
ftserr.for extracts errors from workspace after fit
fttcmd.for decodes command line
ftumap.for remaps local copy of parameters, steps etc
ftva05.for non-linear fitting routine
ftvall.for displays current parameters, steps etc
ftvals.for displays current paramteres, steps etc
ftxhlp.for additional help information (dummy in library)
ftyset.for shows or sets y scale limits
ftxset.for shows or sets x scale limits
ftprld.for sets up dialogue with external control program (clickfit)
ftglnk.for sets up links between parameters
ftsort.for sorts input data into increasing x-values
utilities
iniwin.for once used to control switching graphical/text modes
lpendf.for closes printer output file
lpout.for open printer output file
poscur.for draws cursor on display
pubess.for logo routine
rsplt.for plotiing program
userlog.for log generator
erase.for clears graphics
flusht.for empties terminal buffer
tdlmr.for sets scale limits
trimmd.for strips trailing blanks in string
gtst.for test program
inread.for test readin routine
gauss.for test calculation routine
February 2008 - fourth column read in and treatment
If a fourth data column is read into the array in /REDIT4/ and the /FLAGS4/ variable INCOL4
is set to .TRUE. the program suite will propagate this through to the calculation routine which
will find appropriate selected values in /OBSDA4/USE4 This maintains compatibility with previous
three column data read-in.
February 2008 - data are re-sequenced in order of increasing x
This is performed by the heap-sort in ftsort.
March 2013 - data arrays extended to 21000
Small adjustments made to forfit and ftfuns Interrupts to fitting introduced