Changeset 1051


Ignore:
Timestamp:
Sep 7, 2013 10:35:11 AM (10 years ago)
Author:
vondreele
Message:

remove all mcsa fortran code - not needed
replace 32-bit Windows libraries
complete rework of MC/SA structure factor calcs - no loops!
all numpy/python significant speedup >6x over fortran & >100x over
reflection looped numpy/python

Location:
trunk
Files:
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Exercises/fluroapatite/FAP.EXP

    r1038 r1051  
    66    HSTRY  4 GENLES  Win32  Jun 27 16:05:09 2013 Sdsq= 0.443E+06 S/E= 0.112E-06
    77    HSTRY  5 POWPREF Win32  Aug 16 09:24:35 2013                               
     8    HSTRY  6 GENLES  Win32  Aug 16 09:24:39 2013 Sdsq= 0.443E+06 S/E= 0.112E-06
     9    HSTRY  7 EXPEDT  Win32  Aug 16 09:27:13 2013             L   O             
     10    HSTRY  8 GENLES  Win32  Aug 16 09:27:20 2013 Sdsq= 0.108E+06 S/E= 0.117E+04
     11    HSTRY  9 POWPREF Win32  Aug 16 09:27:48 2013                               
     12    HSTRY 10 GENLES  Win32  Aug 16 09:27:54 2013 Sdsq= 0.188E+05 S/E= 0.618E-02
     13    HSTRY 11 EXPEDT  Win32  Aug 16 09:28:59 2013             LA                 
     14    HSTRY 12 GENLES  Win32  Aug 16 09:29:06 2013 Sdsq= 0.185E+05 S/E= 0.629E-03
     15    HSTRY 13 POWPREF Win32  Sep 05 12:28:08 2013                               
     16    HSTRY 14 EXPEDT  Win32  Sep 05 12:28:55 2013 P  H                           
     17    HSTRY 15 POWPREF Win32  Sep 05 12:28:59 2013                               
     18    HSTRY 16 GENLES  Win32  Sep 05 12:29:04 2013 Sdsq= 0.184E+05 S/E= 0.358E-03
    819  DSGL CDAT1  DRAD ARAD NOFO                                                   
    9   GNLS  RUN on Aug 16 09:29:06 2013    Total cycles run  12       18463.       
     20  GNLS  RUN on Sep 05 12:38:03 2013    Total cycles run  15       18448.       
    1021  GNLS CDAT1  MXCY  3                                                           
    1122  GNLS SHFTS      0.01      0.00                                               
     
    4253 EXPR ATYP 4  O           3      1.09      0.89 1.45   96 1.40                 
    4354 EXPR NPHAS     1    0    0    0    0    0    0    0    0                       
    44  REFN GDNFT  Reduced CHI**2 =  3.227     for   28 variables                     
    45  REFN RPOWD     0.1005    0.0766   5750  18463.        0.0000    0.0000     0   
    46  REFN STATS  Cycle  12 There were  5750 observations. Total CHI**2 = 1.8463E+04
     55 REFN GDNFT  Reduced CHI**2 =  3.224     for   28 variables                     
     56 REFN RPOWD     0.1005    0.0766   5750  18448.        0.0000    0.0000     0   
     57 REFN STATS  Cycle  15 There were  5750 observations. Total CHI**2 = 1.8448E+04
    4758CRS1    PNAM  fap                                                               
    4859CRS1   NATOM    7                                                               
    49 CRS1  ABC     9.371725  9.371725  6.885868    Y    0                           
     60CRS1  ABC     9.371724  9.371724  6.885867    Y    0                           
     61CRS1  ABCSIG  0.000036  0.000036  0.000037                                     
    5062CRS1  ANGLES   90.0000   90.0000  120.0000                                     
    51 CRS1  AT  1A  CA        0.333333  0.666667  0.001901  1.000000CA1        4 000 
    52 CRS1  AT  1B  0.006051                                                    I XU 
    53 CRS1  AT  2A  CA        0.241949  0.992577  0.250000  1.000000CA2        6 000 
    54 CRS1  AT  2B  0.004547                                                    I XU 
    55 CRS1  AT  3A  P         0.397382  0.367691  0.250000  1.000000P3         6 000 
    56 CRS1  AT  3B  0.003981                                                    I XU 
     63CRS1  ANGSIG    0.0000    0.0000    0.0000                                     
     64CRS1  AT  1A  CA        0.333333  0.666667  0.001913  1.000000CA1        4 000 
     65CRS1  AT  1B  0.006079                                                    I XU 
     66CRS1  AT  2A  CA        0.241976  0.992603  0.250000  1.000000CA2        6 000 
     67CRS1  AT  2B  0.004561                                                    I XU 
     68CRS1  AT  3A  P         0.397416  0.367704  0.250000  1.000000P3         6 000 
     69CRS1  AT  3B  0.003978                                                    I XU 
    5770CRS1  AT  4A  F         0.000000  0.000000  0.250000  1.000000F4         2 000 
    58 CRS1  AT  4B  0.013903                                                    I XU 
    59 CRS1  AT  5A  O         0.325032  0.484745  0.250000  1.000000O5         6 000 
    60 CRS1  AT  5B  0.005059                                                    I XU 
    61 CRS1  AT  6A  O         0.591459  0.469980  0.250000  1.000000O6         6 000 
    62 CRS1  AT  6B  0.006562                                                    I XU 
    63 CRS1  AT  7A  O         0.339540  0.258134  0.070661  1.000000O7        12 000 
    64 CRS1  AT  7B  0.006753                                                    I XU 
     71CRS1  AT  4B  0.013850                                                    I XU 
     72CRS1  AT  5A  O         0.325053  0.484763  0.250000  1.000000O5         6 000 
     73CRS1  AT  5B  0.004916                                                    I XU 
     74CRS1  AT  6A  O         0.591494  0.469954  0.250000  1.000000O6         6 000 
     75CRS1  AT  6B  0.006609                                                    I XU 
     76CRS1  AT  7A  O         0.339510  0.258126  0.070641  1.000000O7        12 000 
     77CRS1  AT  7B  0.006713                                                    I XU 
    6578CRS1  CELVOL        523.755          0.005                                     
    6679CRS1  CHMF 1  CA            5.00                                               
     
    7588HAP1 1PHSFR      1.0000        N    0                                           
    7689HAP1 1PRCF      2   18   0.01000    0NNNYYNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNN       
    77 HAP1 1PRCF 1   0.200000E+01  -0.200000E+01   0.500000E+01   0.335536E+01       
    78 HAP1 1PRCF 2   0.247468E+01   0.000000E+00   0.000000E+00   0.490113E+01       
     90HAP1 1PRCF 1   0.200000E+01  -0.200000E+01   0.500000E+01   0.335183E+01       
     91HAP1 1PRCF 2   0.248803E+01   0.000000E+00   0.000000E+00   0.490166E+01       
    7992HAP1 1PRCF 3   0.000000E+00   0.000000E+00   0.000000E+00   0.000000E+00       
    8093HAP1 1PRCF 4   0.000000E+00   0.000000E+00   0.000000E+00   0.000000E+00       
     
    8295HAP1 1PREFO1  1.000000  1.000000  0.000000  0.000000  1.000000   NN    0    0   
    8396HAP1 1RADDAM    0.00000E+00    N    0      0.00                                 
    84 HST  1  HFIL  c:\gsas\class\data\fap.xra                                       
     97HST  1  HFIL  fap.xra                                                          
    8598HST  1  HNAM   15.000    .020  90.000 PS1286 90MR21 Y286 DOUBLE  T=19X2        1
    8699HST  1  IFIL  c:\gsas\class\parm\inst_xry.prm                                   
    87100HST  1 BANK     1                                                               
    88 HST  1 BIGFO   0.137435E+06                                                     
     101HST  1 BIGFO   0.137403E+06                                                     
    89102HST  1 CHANS         0         1      5750  73092096      5753    0    0       
    90103HST  1 EPHAS    0    0    0    0    0    0    0    0    0    Y                 
     
    97110HST  1 NPHAS    1    0    0    0    0    0    0    0    0                       
    98111HST  1 NREF   660    0.8499    Y    Y                                           
    99 HST  1 R-FAC  654   0.06870   7.435812E+06                                     
    100 HST  1 RPOWD    0.1005    0.0766   5750  18463.        0.0000    0.0000    0   
     112HST  1 R-FAC  654   0.06830   7.393183E+06                                     
     113HST  1 RPOWD    0.1005    0.0766   5750  18448.        0.0000    0.0000    0   
    101114HST  1 TRNGE  15.00000 129.98000                                               
    102115HST  1 WREXP    0.0561                                                         
    103116HST  1ABSCOR   0.000000E+00   0.000000E+00    N    0                           
    104117HST  1BAKGD     5    3    Y    0    Y                                           
    105 HST  1BAKGD1   0.416526E+02   0.702634E+03   0.343328E+01                       
     118HST  1BAKGD1   0.418073E+02   0.702330E+03   0.340611E+01                       
    106119HST  1CHI       0.0000                                                         
    107120HST  1DETAZM    0.0000                                                         
     
    109122HST  1EXC  2   130.000  1000.000                                               
    110123HST  1EXMNMX   1.00000   1.00000                                               
    111 HST  1HSCALE     96.611        Y    0                                           
     124HST  1HSCALE     96.636        Y    0                                           
    112125HST  1I HEAD  DUMMY INCIDENT SPECTRUM FOR X-RAY DIFFRACTOMETER                 
    113126HST  1I ITYP    0    0.0000  180.0000         1                                 
     
    119132HST  1PRCF11   2.000000E+00  -2.000000E+00   5.000000E+00   1.000000E+00       
    120133HST  1PRCF12   1.000000E+00   0.000000E+00                                     
    121 HST  1RSP    0.0609 0.0768 0.0812 0.0809 0.0802 0.0736 0.0788 0.0814 0.1039     
    122 HST  1RSPA   0.0808 0.0718 0.0758 0.0735 0.0670 0.0677 0.0737 0.0774 0.0944     
     134HST  1RSP    0.0609 0.0767 0.0810 0.0812 0.0820 0.0736 0.0788 0.0811 0.1027     
     135HST  1RSPA   0.0807 0.0717 0.0756 0.0738 0.0690 0.0677 0.0736 0.0771 0.0935     
    123136HST  1RSPTT  15.00 27.76 40.54 53.32 66.10 78.86 91.64104.42117.20129.98       
    124 HST  1RSPW   0.0793 0.1007 0.1051 0.1034 0.1124 0.0966 0.1010 0.1033 0.1317     
    125 HST  1RSPWA  0.0994 0.0892 0.0943 0.0869 0.0834 0.0832 0.0901 0.0949 0.1120     
     137HST  1RSPW   0.0793 0.1006 0.1049 0.1038 0.1137 0.0966 0.1011 0.1028 0.1301     
     138HST  1RSPWA  0.0993 0.0891 0.0941 0.0873 0.0855 0.0832 0.0900 0.0946 0.1110     
    126139HST  1TRMNMX   1.00000   1.00000                                               
    127140ZZZZZZZZZZZZ  Last EXP file record                                             
    128     HSTRY  6 GENLES  Win32  Aug 16 09:24:39 2013 Sdsq= 0.443E+06 S/E= 0.112E-06
    129     HSTRY  7 EXPEDT  Win32  Aug 16 09:27:13 2013             L   O             
    130     HSTRY  8 GENLES  Win32  Aug 16 09:27:20 2013 Sdsq= 0.108E+06 S/E= 0.117E+04
    131 CRS1  ABCSIG  0.000036  0.000036  0.000037                                     
    132 CRS1  ANGSIG    0.0000    0.0000    0.0000                                     
    133     HSTRY  9 POWPREF Win32  Aug 16 09:27:48 2013                               
    134     HSTRY 10 GENLES  Win32  Aug 16 09:27:54 2013 Sdsq= 0.188E+05 S/E= 0.618E-02
    135     HSTRY 11 EXPEDT  Win32  Aug 16 09:28:59 2013             LA                 
    136     HSTRY 12 GENLES  Win32  Aug 16 09:29:06 2013 Sdsq= 0.185E+05 S/E= 0.629E-03
     141    HSTRY 17 GENLES  Win32  Sep 05 12:38:03 2013 Sdsq= 0.184E+05 S/E= 0.861E-04
  • trunk/GSASIImath.py

    r1045 r1051  
    25282528        atNo += len(atypes)
    25292529        return atNo
    2530        
     2530               
    25312531    def GetAtomM(Xdata,SGData):
    25322532        Mdata = []
     
    25932593                continue        #skips March Dollase
    25942594        return Tdata,Xdata.T
    2595    
    2596 
    2597     def mcsaCalc(values,refList,rcov,ifInv,RBdata,varyList,parmDict):
     2595       
     2596    def getAllTX(Tdata,Mdata,Xdata,SGM,SGT):
     2597        allX = np.inner(Xdata,SGM)+SGT
     2598        allT = np.repeat(Tdata,allX.shape[1])
     2599        allM = np.repeat(Mdata,allX.shape[1])
     2600        allX = np.reshape(allX,(-1,3))
     2601        return allT,allM,allX
     2602
     2603    def getAllX(Xdata,SGM,SGT):
     2604        allX = np.inner(Xdata,SGM)+SGT
     2605        allX = np.reshape(allX,(-1,3))
     2606        return allX
     2607       
     2608    def mcsaCalc(values,refList,rcov,ifInv,allFF,RBdata,varyList,parmDict):
    25982609        ''' Compute structure factors for all h,k,l for phase
    25992610        input:
    2600             refList: [ref] where each ref = h,k,l,m,d,...,[equiv h,k,l],phase[equiv]
    2601             ParmDict:
    2602         puts result F^2 in each ref[8] in refList
     2611            refList: [ref] where each ref = h,k,l,m,d,...
     2612            rcov:   array[nref,nref] covariance terms between Fo^2 values
     2613            ifInv:  bool True if centrosymmetric
     2614            allFF: array[nref,natoms] each value is mult*FF(H)/max(mult)
     2615            RBdata: [dict] rigid body dictionary
     2616            varyList: [list] names of varied parameters in MC/SA (not used here)           
     2617            ParmDict: [dict] problem parameters
     2618        puts result F^2 in each ref[5] in refList
     2619        returns:
     2620            delt-F*rcov*delt-F/sum(Fo^2)^2
    26032621        '''       
    2604         def mcsaMDSFcalc(mul,FFs,Uniq,Phi):
    2605             ''' Calls fortran routine'''
    2606             Icalc = pyd.pymcsamdsfcalc(ifInv,len(Tdata),Tdata,Mdata,Xdata.flatten(),
    2607                 MDval,MDaxis,Gmat,mul,len(FFs),FFs,len(Uniq),Uniq.flatten(),Phi)
    2608             return Icalc
    26092622        global tsum
    2610         parmDict.update(dict(zip(varyList,values)))
    2611         Tdata,Xdata = GetAtomTX(RBdata,parmDict)
    2612         Mdata = parmDict['Mdata']
    2613         MDval = parmDict['0:MDval']
     2623        t0 = time.time()
     2624        parmDict.update(dict(zip(varyList,values)))             #update parameter tables
     2625        Xdata = GetAtomTX(RBdata,parmDict)[1]                   #get new atom coords from RB
     2626        allX = getAllX(Xdata,SGM,SGT)                           #fill unit cell - dups. OK
     2627        MDval = parmDict['0:MDval']                             #get March-Dollase coeff
    26142628        MDaxis = parmDict['0:MDaxis']
    26152629        Gmat = parmDict['Gmat']
    2616         Srefs = np.zeros(len(refList))
    2617         sumFcsq = 0.
    2618         for refl in refList:
    2619             t0 = time.time()
    2620             refl[5] = mcsaMDSFcalc(refl[3],refl[7],refl[8],refl[9])
    2621             tsum += (time.time()-t0)
    2622             sumFcsq += refl[5]
     2630        HX2pi = 2.*np.pi*np.inner(allX,refList[:3].T)           #form 2piHX for every H,X pair
     2631        Aterm = refList[3]*np.sum(allFF*np.cos(HX2pi),axis=0)**2    #compute real part for all H
     2632        if ifInv:
     2633            refList[5] = Aterm
     2634        else:
     2635            Bterm = refList[3]*np.sum(allFF*np.sin(HX2pi),axis=0)**2    #imaginary part for all H
     2636            refList[5] = Aterm+Bterm
     2637        sumFcsq = np.sum(refList[5])
    26232638        scale = (parmDict['sumFosq']/sumFcsq)
    2624         for iref,refl in enumerate(refList):
    2625             refl[5] *= scale
    2626             Srefs[iref] = refl[4]-refl[5]
     2639        refList[5] *= scale
     2640        Srefs = refList[4]-refList[5]
    26272641        M = np.inner(Srefs,np.inner(rcov,Srefs))
     2642        tsum += (time.time()-t0)
    26282643        return M/parmDict['sumFosq']**2
    2629    
     2644
    26302645    sq8ln2 = np.sqrt(8*np.log(2))
    26312646    sq2pi = np.sqrt(2*np.pi)
     
    26352650    Gmat = G2lat.cell2Gmat(generalData['Cell'][1:7])[0]
    26362651    SGData = generalData['SGData']
     2652    SGM = [SGData['SGOps'][i][0] for i in range(len(SGData['SGOps']))]
     2653    SGT = [SGData['SGOps'][i][1] for i in range(len(SGData['SGOps']))]
    26372654    fixAtoms = data['Atoms']                       #if any
    26382655    cx,ct,cs = generalData['AtomPtrs'][:3]
     
    26732690    aTypes = list(aTypes)
    26742691    Tdata,Xdata = GetAtomTX(RBdata,parmDict)
    2675     parmDict['Mdata'] = GetAtomM(Xdata,SGData)
     2692    Mdata = GetAtomM(Xdata,SGData)
     2693    allT,allM = getAllTX(Tdata,Mdata,Xdata,SGM,SGT)[:2]
    26762694    FFtables = G2el.GetFFtable(aTypes)
    26772695    refs = []
     2696    allFF = []
    26782697    sumFosq = 0
    26792698    if 'PWDR' in reflName:
     
    26832702                sig = G2pwd.getgamFW(sig,gam)/sq8ln2        #--> sig from FWHM
    26842703                SQ = 0.25/d**2
    2685                 Uniq,phi = G2spc.GenHKLf([h,k,l],SGData)[2:]
    2686                 FFs = G2el.getFFvalues(FFtables,SQ,True)
    2687                 refs.append([h,k,l,m,f*m,pos,sig,FFs,Uniq,phi])
     2704                allFF.append(allM*[G2el.getFFvalues(FFtables,SQ,True)[i] for i in allT]/np.max(allM))
     2705                refs.append([h,k,l,m,f*m,pos,sig])
    26882706                sumFosq += f*m
    26892707        nRef = len(refs)
     
    27092727            if d >= MCSA['dmin'] and v:       #skip unrefined ones
    27102728                SQ = 0.25/d**2
    2711                 Uniq,phi = G2spc.GenHKLf([h,k,l],SGData)[2:]
    2712                 FFs = G2el.getFFvalues(FFtables,SQ,True)
    2713                 refs.append([h,k,l,m,f*m,iref,0.,FFs,Uniq,phi])
     2729                allFF.append(allM*[G2el.getFFvalues(FFtables,SQ,True)[i] for i in allT]/np.max(allM))
     2730                refs.append([h,k,l,m,f*m,iref,0.])
    27142731                sumFosq += f*m
    27152732        nRef = len(refs)
     
    27412758            if d >= MCSA['dmin']:
    27422759                SQ = 0.25/d**2
    2743                 Uniq,phi = G2spc.GenHKLf([h,k,l],SGData)[2:]
    2744                 FFs = G2el.getFFvalues(FFtables,SQ,True)
    2745                 refs.append([h,k,l,m,f*m,0.,0.,FFs,Uniq,phi])
     2760                allFF.append(allM*[G2el.getFFvalues(FFtables,SQ,True)[i] for i in allT]/np.max(allM))
     2761                refs.append([h,k,l,m,f*m,0.,0.])
    27462762                sumFosq += f*m
    27472763        nRef = len(refs)
    27482764        rcov = np.identity(len(refs))
     2765    allFF = np.array(allFF).T
     2766    refs = np.array(refs).T
    27492767    print ' Minimum d-spacing used: %.2f No. reflections used: %d'%(MCSA['dmin'],nRef)
    27502768    print ' Number of parameters varied: %d'%(len(varyList))
     
    27522770    x0 = [parmDict[val] for val in varyList]
    27532771    ifInv = SGData['SGInv']
    2754     results = anneal(mcsaCalc,x0,args=(refs,rcov,ifInv,RBdata,varyList,parmDict),
     2772    results = anneal(mcsaCalc,x0,args=(refs,rcov,ifInv,allFF,RBdata,varyList,parmDict),
    27552773        schedule=MCSA['Algorithm'], full_output=True,
    27562774        T0=MCSA['Annealing'][0], Tf=MCSA['Annealing'][1],dwell=MCSA['Annealing'][2],
  • trunk/GSASIIphsGUI.py

    r1045 r1051  
    44194419        Page = G2frame.dataDisplay.FindPage('MC/SA')
    44204420        G2frame.dataDisplay.SetSelection(Page)
     4421        G2plt.PlotStructure(G2frame,data)
    44214422        wx.CallAfter(UpdateMCSA)
    4422         G2plt.PlotStructure(G2frame,data)
    44234423
    44244424    def OnMCSAaddAtom(event):
  • trunk/fsource/pypowder.for

    r978 r1051  
    182182      END
    183183     
    184       SUBROUTINE PYSETUPSINTAB()
    185       CALL SETUPSINTAB
    186       RETURN
    187       END
    188 
    189       SUBROUTINE PYMDCALC(MDVAL,MDAXIS,NUNIQ,UNIQ,G,MDCORR)
    190 Cf2py intent(in) MDVAL
    191 Cf2py intent(in) MDAXIS
    192 Cf2py intent(in) NUNIQ
    193 cf2py depend(NUNIQ) UNIQ
    194 Cf2py intent(in) G
    195 Cf2py intent(out) MDCORR
    196 
    197       INTEGER*4 NUNIQ
    198       REAL*8 MDVAL,MDAXIS(0:2),UNIQ(0:3*NUNIQ-1),G(3,3),MDCORR
    199 
    200       CALL MDCALC(MDVAL,MDAXIS,G,NUNIQ,UNIQ,MDCORR)
    201       RETURN
    202       END
    203 
    204       SUBROUTINE PYMCSASFCALC(INV,NTD,TDATA,MDATA,XDATA,MUL,NFFS,FFS,
    205      1  NUNIQ,UNIQ,PHI,ICALC)
    206 Cf2py intent(in) INV
    207 Cf2py intent(in) NTD
    208 Cf2py intent(in) TDATA
    209 cf2py depend(NTD) TDATA
    210 Cf2py intent(in) MDATA
    211 cf2py depend(NTD) MDATA
    212 Cf2py intent(in) XDATA
    213 cf2py depend(NTD) XDATA
    214 Cf2py intent(in) MUL
    215 Cf2py intent(in) NFFS
    216 Cf2py intent(in) FFS
    217 cf2py depend(NFFS) FFS
    218 Cf2py intent(in) NUNIQ
    219 Cf2py intent(in) UNIQ
    220 cf2py depend(NUNIQ) UNIQ
    221 Cf2py intent(in) PHI
    222 cf2py depend(NUNIQ) PHI
    223 Cf2py intent(out) ICALC
    224 
    225       LOGICAL*4 INV
    226       INTEGER*4 NTD,MUL,NFFS,NUNIQ,TDATA(0:NTD-1)
    227       REAL*8 XDATA(0:3*NTD-1),UNIQ(0:3*NUNIQ-1)
    228       REAL*8 MDATA(0:NTD-1),FFS(0:NFFS-1)
    229       REAL*8 ICALC,PHI(0:NUNIQ-1)
    230 
    231       CALL MCSASFCALC(INV,NTD,TDATA,MDATA,XDATA,MUL,NFFS,FFS,
    232      1  NUNIQ,UNIQ,PHI,ICALC)
    233       RETURN
    234       END
    235 
    236       SUBROUTINE PYMCSAMDSFCALC(INV,NTD,TDATA,MDATA,XDATA,
    237      1  MDVAL,MDAXIS,G,MUL,NFFS,FFS,NUNIQ,UNIQ,PHI,ICALC)
    238 Cf2py intent(in) INV
    239 Cf2py intent(in) NTD
    240 Cf2py intent(in) TDATA
    241 cf2py depend(NTD) TDATA
    242 Cf2py intent(in) MDATA
    243 cf2py depend(NTD) MDATA
    244 Cf2py intent(in) XDATA
    245 cf2py depend(NTD) XDATA
    246 Cf2py intent(in) MDVAL
    247 Cf2py intent(in) MDAXIS
    248 Cf2py intent(in) G
    249 Cf2py intent(in) MUL
    250 Cf2py intent(in) NFFS
    251 Cf2py intent(in) FFS
    252 cf2py depend(NFFS) FFS
    253 Cf2py intent(in) NUNIQ
    254 Cf2py intent(in) UNIQ
    255 cf2py depend(NUNIQ) UNIQ
    256 Cf2py intent(in) PHI
    257 cf2py depend(NUNIQ) PHI
    258 Cf2py intent(out) ICALC
    259 
    260       LOGICAL*4 INV
    261       INTEGER*4 NTD,MUL,NFFS,NUNIQ,TDATA(0:NTD-1)
    262       REAL*8 XDATA(0:3*NTD-1),UNIQ(0:3*NUNIQ-1)
    263       REAL*8 MDATA(0:NTD-1),FFS(0:NFFS-1)
    264       REAL*8 ICALC,PHI(0:NUNIQ-1),MDVAL,MDAXIS(0:2),G(3,3)
    265       REAL*8 MDCORR
    266 
    267       CALL MCSASFCALC(INV,NTD,TDATA,MDATA,XDATA,MUL,NFFS,FFS,
    268      1  NUNIQ,UNIQ,PHI,ICALC)
    269       CALL MDCALC(MDVAL,MDAXIS,G,NUNIQ,UNIQ,MDCORR)
    270       ICALC = ICALC*MDCORR
    271       RETURN
    272       END
    273 
    274184C Fortran (fast) linear interpolation -- B.H. Toby 9/2011
    275185      SUBROUTINE PYFINTERP(NIN,XIN,YIN,NOUT,XOUT,YOUT)
Note: See TracChangeset for help on using the changeset viewer.