24 SUBROUTINE mnsimp(FCN,FUTIL)
38 IMPLICIT DOUBLE PRECISION (
a-
h,
o-
z)
59 2/mn7ext/ u(mne) ,alim(mne) ,blim(mne)
60 3/mn7err/ erp(mni) ,ern(mni) ,werr(mni) ,globcc(mni)
61 4/mn7inx/ nvarl(mne) ,niofex(mne),nexofi(mni)
62 5/mn7int/
x(mni) ,xt(mni) ,dirin(mni)
63 6/mn7fx2/
xs(mni) ,xts(mni) ,dirins(mni)
64 7/mn7der/ grd(mni) ,g2(mni) ,gstep(mni) ,gin(mne) ,dgrd(mni)
65 8/mn7fx3/ grds(mni) ,g2s(mni) ,gsteps(mni)
66 9/mn7fx1/ ipfix(mni) ,npfix
67 a/mn7var/ vhmat(mnihl)
68 b/mn7vat/ vthmat(mnihl)
69 c/mn7sim/
p(mni,mni+1),pstar(mni),pstst(mni) ,pbar(mni),prho(mni)
71 parameter(maxdbg=10, maxstk=10, maxcwd=20,
maxp=30, maxcpt=101)
74 d/mn7npr/ maxint ,npar ,maxext ,nu
75 e/mn7iou/ isysrd ,isyswr ,isyssa ,npagwd ,npagln ,newpag
76 e/mn7io2/ istkrd(maxstk) ,nstkrd ,istkwr(maxstk) ,nstkwr
77 f/mn7tit/ cfrom ,cstatu ,ctitl ,cword ,cundef ,cvrsn ,covmes
78 g/mn7flg/ isw(7) ,idbg(0:maxdbg) ,nblock ,icomnd
79 h/mn7min/ amin ,
up ,edm ,fval3 ,epsi ,apsi ,dcovar
80 i/mn7cnv/ nfcn ,nfcnmx ,nfcnlc ,nfcnfr ,itaur,istrat,nwrmes(2)
82 k/mn7log/ lwarn ,lrepor ,limset ,lnolim ,lnewmn ,lphead
83 l/mn7cns/ epsmac ,epsma2 ,vlimlo ,vlimhi ,undefi ,bigedm,updflt
84 m/mn7rpt/ xpt(maxcpt) ,ypt(maxcpt)
85 n/mn7cpt/ chpt(maxcpt)
86 o/mn7xcr/ xmidcr ,ymidcr ,xdircr ,ydircr ,ke1cr ,ke2cr
87 CHARACTER CTITL*50, CWORD*(maxcwd), CUNDEF*10, CFROM*8,
88 + cvrsn*6, covmes(0:3)*22, cstatu*10, chpt*1
89 LOGICAL LWARN, LREPOR, LIMSET, LNOLIM, LNEWMN, LPHEAD
92 DATA alpha,beta,gamma,rhomin,rhomax / 1.0, 0.5, 2.0, 4.0, 8.0/
93 IF (npar .LE. 0)
RETURN 94 IF (amin .EQ. undefi)
CALL mnamin(fcn,futil)
102 rho2 = rho1 + alpha*gamma
104 IF (isw(5) .GE. 0)
WRITE(isyswr,100) epsi
105 100
FORMAT(.LT.
' START SIMPLEX MINIMIZATION. CONVERGENCE WHEN EDM ' 110 IF (dxdi .NE. zero) dirin(
i)=werr(
i)/dxdi
111 dmin = epsma2*abs(
x(
i))
112 IF (dirin(
i) .LT. dmin) dirin(
i)=dmin
127 4
x(
i) = bestx + dirin(
i)
129 CALL fcn(nparx,gin,
f, u, 4, futil)
131 IF (
f .LT. aming)
GO TO 6
133 IF (kg .EQ. 1)
GO TO 8
136 dirin(
i) = dirin(
i) * (-0.4)
137 IF (nf .LT. 3)
GO TO 4
140 dirin(
i) = dirin(
i) * 3.0
146 dirin(
i) = dirin(
i) * 3.0
151 IF (ns .LT. 6)
GO TO 4
156 IF (aming .LT. absmin) jl =
i 157 IF (aming .LT. absmin) absmin = aming
164 CALL mnrazz(ynpp1,pbar,
y,jh,jl)
168 IF (isw(5) .GE. 1)
CALL mnprin(5,amin)
174 IF (sig2 .LT. epsi .AND. edm.LT.epsi)
GO TO 76
176 IF ((nfcn-npfn) .GT. nfcnmx)
GO TO 78
181 59 pb = pb + wg *
p(
i,
j)
182 pbar(
i) = pb - wg *
p(
i,jh)
183 60 pstar(
i)=(1.+alpha)*pbar(
i)-alpha*
p(
i,jh)
185 CALL fcn(nparx,gin,ystar,u,4,futil)
187 IF(ystar.GE.amin)
GO TO 70
191 61 pstst(
i)=gamma*pstar(
i)+(1.-gamma)*pbar(
i)
193 CALL fcn(nparx,gin,ystst,u,4,futil)
196 y1 = (ystar-
y(jh)) * rho2
197 y2 = (ystst-
y(jh)) * rho1
198 rho = 0.5 * (rho2*y1 -rho1*y2) / (y1 -y2)
199 IF (rho .LT. rhomin)
GO TO 66
200 IF (rho .GT. rhomax) rho = rhomax
202 64 prho(
i) = rho*pbar(
i) + (1.0-rho)*
p(
i,jh)
204 CALL fcn(nparx,gin,yrho, u,4,futil)
206 IF (yrho .LT. amin) cstatu =
'PROGRESS ' 207 IF (yrho .LT.
y(jl) .AND. yrho .LT. ystst)
GO TO 65
208 IF (ystst .LT.
y(jl))
GO TO 67
209 IF (yrho .GT.
y(jl))
GO TO 66
211 65
CALL mnrazz (yrho,prho,
y,jh,jl)
213 66
IF (ystst .LT.
y(jl))
GO TO 67
214 CALL mnrazz(ystar,pstar,
y,jh,jl)
216 67
CALL mnrazz(ystst,pstst,
y,jh,jl)
218 IF (isw(5) .LT. 2)
GO TO 50
219 IF (isw(5) .GE. 3 .OR. mod(ncycl, 10) .EQ. 0)
CALL mnprin(5,amin)
222 70
IF (ystar .GE.
y(jh))
GO TO 73
224 CALL mnrazz(ystar,pstar,
y,jh,jl)
225 IF (jhold .NE. jh)
GO TO 50
228 74 pstst(
i)=beta*
p(
i,jh)+(1.-beta)*pbar(
i)
230 CALL fcn(nparx,gin,ystst,u,4,futil)
232 IF(ystst.GT.
y(jh))
GO TO 1
234 IF (ystst .LT. amin) cstatu =
'PROGRESS ' 235 IF (ystst .LT. amin)
GO TO 67
236 CALL mnrazz(ystst,pstst,
y,jh,jl)
239 76
IF (isw(5) .GE. 0)
WRITE(isyswr,
'(A)')
240 +
' SIMPLEX MINIMIZATION HAS CONVERGED.' 243 78
IF (isw(5) .GE. 0)
WRITE(isyswr,
'(A)')
244 +
' SIMPLEX TERMINATES WITHOUT CONVERGENCE.' 251 81 pb = pb + wg *
p(
i,
j)
252 82 pbar(
i) = pb - wg *
p(
i,jh)
254 CALL fcn(nparx,gin,ypbar,u,4,futil)
256 IF (ypbar .LT. amin)
CALL mnrazz(ypbar,pbar,
y,jh,jl)
258 IF (nfcnmx+npfn-nfcn .LT. 3*npar)
GO TO 90
259 IF (edm .GT. 2.0*epsi)
GO TO 1
260 90
IF (isw(5) .GE. 0)
CALL mnprin(5, amin)
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
block data include Zlatfit h c fitting region data data data data data d0 data data d0 data data h g *is for param c g data up(2, 1)/7.0d0/
dE dx *! Nuc Int sampling table e
subroutine mnprin(INKODE, FVAL)
! constants thru Cosmos real ! if multiplied to deg radian Torad ! light velocity m sec ! infinty ! kg m2 *Togpcm2 g cm2 ! g cm2 *Tokgpm2 kg m2 ! cm *Tom m ! m *Tocm cm ! g cm3 *Tokgpm3 kg m3 ! kg m3 *Togpcm3 g cm3 ! sec *Tonsec nsec ! Tesla m ! Avogadro *A2deninv ! mfp *n * xs
subroutine mnamin(FCN, FUTIL)
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kiron data j
subroutine mndxdi(PINT, IPAR, DXDI)
latitude latitude this system is used *****************************************************************! type coord sequence union map real y
dE dx *! Nuc Int sampling table d
subroutine mnsimp(FCN, FUTIL)
dE dx *! Nuc Int sampling table b
block data include Zlatfit h c fitting region data data data data data d0 data data d0 data data m
dE dx *! Nuc Int sampling table h
dE dx *! Nuc Int sampling table g
subroutine mnrazz(YNEW, PNEW, Y, JH, JL)
*************************block data cblkTracking *************************implicit none data *ExactThick *Freec *RatioToE0 *MagChgDist *TimeStructure *Truncn *Truncx data *IncMuonPolari *KEminObs *ThinSampling *EthinRatio *Generate *LpmEffect *MagPairEmin e10
! structure defining a particle at production ! Basic idea of what is to be contained in ! the particle structue is that dynamical ones should be included those derivable from the particle code ! is not included ******************************************************type fmom momentum sequence union map real e endmap map real * x
dE dx *! Nuc Int sampling table f
dE dx *! Nuc Int sampling table c