23 IMPLICIT DOUBLE PRECISION (
a-
h,
o-
z)
51 2/mn7ext/ u(mne) ,alim(mne) ,blim(mne)
52 3/mn7err/ erp(mni) ,ern(mni) ,werr(mni) ,globcc(mni)
53 4/mn7inx/ nvarl(mne) ,niofex(mne),nexofi(mni)
54 5/mn7int/
x(mni) ,xt(mni) ,dirin(mni)
55 6/mn7fx2/
xs(mni) ,xts(mni) ,dirins(mni)
56 7/mn7der/ grd(mni) ,g2(mni) ,gstep(mni) ,gin(mne) ,dgrd(mni)
57 8/mn7fx3/ grds(mni) ,g2s(mni) ,gsteps(mni)
58 9/mn7fx1/ ipfix(mni) ,npfix
59 a/mn7var/ vhmat(mnihl)
60 b/mn7vat/ vthmat(mnihl)
61 c/mn7sim/
p(mni,mni+1),pstar(mni),pstst(mni) ,pbar(mni),prho(mni)
63 parameter(maxdbg=10, maxstk=10, maxcwd=20,
maxp=30, maxcpt=101)
66 d/mn7npr/ maxint ,npar ,maxext ,nu
67 e/mn7iou/ isysrd ,isyswr ,isyssa ,npagwd ,npagln ,newpag
68 e/mn7io2/ istkrd(maxstk) ,nstkrd ,istkwr(maxstk) ,nstkwr
69 f/mn7tit/ cfrom ,cstatu ,ctitl ,cword ,cundef ,cvrsn ,covmes
70 g/mn7flg/ isw(7) ,idbg(0:maxdbg) ,nblock ,icomnd
71 h/mn7min/ amin ,
up ,edm ,fval3 ,epsi ,apsi ,dcovar
72 i/mn7cnv/ nfcn ,nfcnmx ,nfcnlc ,nfcnfr ,itaur,istrat,nwrmes(2)
74 k/mn7log/ lwarn ,lrepor ,limset ,lnolim ,lnewmn ,lphead
75 l/mn7cns/ epsmac ,epsma2 ,vlimlo ,vlimhi ,undefi ,bigedm,updflt
76 m/mn7rpt/ xpt(maxcpt) ,ypt(maxcpt)
77 n/mn7cpt/ chpt(maxcpt)
78 o/mn7xcr/ xmidcr ,ymidcr ,xdircr ,ydircr ,ke1cr ,ke2cr
79 CHARACTER ctitl*50, cword*(maxcwd), cundef*10, cfrom*8,
80 + cvrsn*6, covmes(0:3)*22, cstatu*10, chpt*1
81 LOGICAL lwarn, lrepor, limset, lnolim, lnewmn, lphead
82 dimension xptu(nptu), yptu(nptu), w(mni),gcc(mni)
88 ldebug = (idbg(6) .GE. 1)
89 IF (ke1.LE.0 .OR. ke2.LE.0)
GO TO 1350
90 IF (ke1.GT.nu .OR. ke2.GT.nu)
GO TO 1350
93 IF (ki1.LE.0 .OR. ki2.LE.0)
GO TO 1350
94 IF (ki1 .EQ. ki2)
GO TO 1350
95 IF (nptu .LT. 4)
GO TO 1400
98 nfcnmx = 100*(nptu+5)*(npar+1)
106 IF (isw(5) .GE. 0)
THEN 107 WRITE (isyswr,
'(1X,A,I4,A)')
108 +
'START MNCONTOUR CALCULATION OF',nptu,
' POINTS ON CONTOUR.' 109 IF (npar .GT. 2)
THEN 110 IF (npar .EQ. 3)
THEN 113 WRITE (isyswr,
'(1X,A,I3,2X,A)')
114 +
'EACH POINT IS A MINIMUM WITH RESPECT TO PARAMETER ',
117 WRITE (isyswr,
'(1X,A,I3,A)')
118 +
'EACH POINT IS A MINIMUM WITH RESPECT TO THE OTHER',
119 + npar-2,
' VARIABLE PARAMETERS.' 126 CALL mnmnot(fcn,ke1,ke2,val2pl,val2mi,futil)
127 IF (ern(ki1) .EQ. undefi)
THEN 129 CALL mnwarn(
'W',chere,
'Contour squeezed by parameter limits.')
131 IF (ern(ki1) .GE. zero)
GO TO 1500
132 xptu(1) = u1min+ern(ki1)
136 IF (erp(ki1) .EQ. undefi)
THEN 138 CALL mnwarn(
'W',chere,
'Contour squeezed by parameter limits.')
140 IF (erp(ki1) .LE. zero)
GO TO 1500
141 xptu(3) = u1min+erp(ki1)
144 scalx = 1.0/(xptu(3) - xptu(1))
146 CALL mnmnot(fcn,ke2,ke1,val2pl,val2mi,futil)
147 IF (ern(ki2) .EQ. undefi)
THEN 149 CALL mnwarn(
'W',chere,
'Contour squeezed by parameter limits.')
151 IF (ern(ki2) .GE. zero)
GO TO 1500
152 yptu(2) = u2min+ern(ki2)
155 IF (erp(ki2) .EQ. undefi)
THEN 157 CALL mnwarn(
'W',chere,
'Contour squeezed by parameter limits.')
159 IF (erp(ki2) .LE. zero)
GO TO 1500
160 yptu(4) = u2min+erp(ki2)
163 scaly = 1.0/(yptu(4) - yptu(2))
167 WRITE (isyswr,
'(A)')
' Plot of four points found by MINOS' 171 nall = min(nowpts+1,maxcpt)
180 CALL mnplot(xpt,ypt,chpt,nall,isyswr,npagwd,npagln)
195 DO 130
j= 1, mpar*(mpar+1)/2
196 130 vthmat(
j) = vhmat(
j)
206 DO 900 inew= next, nptu
209 DO 200 iold = 1, inew-1
211 IF (i2 .EQ. inew) i2 = 1
212 dist = (scalx*(xptu(iold)-xptu(i2)))**2 +
213 + (scaly*(yptu(iold)-yptu(i2)))**2
214 IF (dist .GT. bigdis)
THEN 221 IF (i2 .EQ. inew) i2 = 1
225 300 xmidcr = a1*xptu(i1) + a2*xptu(i2)
226 ymidcr = a1*yptu(i1) + a2*yptu(i2)
227 xdir = yptu(i2) - yptu(i1)
228 ydir = xptu(i1) - xptu(i2)
229 sclfac = max(abs(xdir*scalx), abs(ydir*scaly))
236 CALL mncros(fcn,aopt,iercr,futil)
237 IF (iercr .GT. 1)
THEN 239 IF (a1 .GT.
half)
THEN 241 +
WRITE (isyswr,
'(A,A,I3,A)')
' MNCONT CANNOT FIND NEXT',
242 +
' POINT ON CONTOUR. ONLY ',nowpts,
' POINTS FOUND.' 245 CALL mnwarn(
'W',chere,
'Cannot find midpoint, try closer.')
251 DO 830 move= nowpts,i1+1,-1
252 xptu(move+1) = xptu(move)
253 yptu(move+1) = yptu(move)
256 xptu(i1+1) = xmidcr + xdircr*aopt
257 yptu(i1+1) = ymidcr + ydircr*aopt
262 cstatu =
'SUCCESSFUL' 263 IF (nowpts .LT. nptu) cstatu =
'INCOMPLETE' 265 IF (isw(5) .GE. 0)
THEN 269 nall = min(nowpts+1,maxcpt)
275 WRITE (isyswr,
'(A,I3,2X,A)')
' Y-AXIS: PARAMETER ',ke2,
277 CALL mnplot(xpt,ypt,chpt,nall,isyswr,npagwd,npagln)
278 WRITE (isyswr,
'(25X,A,I3,2X,A)')
'X-AXIS: PARAMETER ',
282 IF (isw(5) .GE. 1)
THEN 285 WRITE (isyswr,
'(/I5,A,G13.5,A,G11.3)') nowpts,
286 +
' POINTS ON CONTOUR. FMIN=',abest,
' ERRDEF=',
up 287 WRITE (isyswr,
'(9X,A,3X,A,18X,A,3X,A)')
288 + cpnam(ke1),cpnam(ke2),cpnam(ke1),cpnam(ke2)
289 DO 1050 line = 1, nfcol
291 WRITE (isyswr,
'(1X,I5,2G13.5,10X,I5,2G13.5)')
292 + line,xptu(line),yptu(line),lr,xptu(lr),yptu(lr)
294 IF (nfcol .LT. npcol)
WRITE (isyswr,
'(1X,I5,2G13.5)')
295 + npcol,xptu(npcol),yptu(npcol)
301 DO 1100
j= 1, mpar*(mpar+1)/2
302 1100 vhmat(
j) = vthmat(
j)
320 1350
WRITE (isyswr,
'(A)')
' INVALID PARAMETER NUMBERS.' 322 1400
WRITE (isyswr,
'(A)')
' LESS THAN FOUR POINTS REQUESTED.' 324 cstatu =
'USER ERROR' 326 1500
WRITE (isyswr,
'(A)')
' MNCONT UNABLE TO FIND FOUR POINTS.' 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
real(4), dimension(:), allocatable, save h
subroutine mnmnot(FCN, ILAX, ILAX2, VAL2PL, VAL2MI, FUTIL)
! 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
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kiron data j
dE dx *! Nuc Int sampling table d
block data include Zlatfit h c fitting region data data data data data d0 data data d0 data data m
subroutine mnfixp(IINT, IERR)
subroutine mncros(FCN, AOPT, IERCR, FUTIL)
dE dx *! Nuc Int sampling table g
subroutine mncuve(FCN, FUTIL)
subroutine mnwarn(COPT, CORG, CMES)
subroutine mnplot(XPT, YPT, CHPT, NXYPT, NUNIT, NPAGWD, NPAGLN)
! 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