Changeset 1051
- Timestamp:
- Sep 7, 2013 10:35:11 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 1 deleted
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Exercises/fluroapatite/FAP.EXP
r1038 r1051 6 6 HSTRY 4 GENLES Win32 Jun 27 16:05:09 2013 Sdsq= 0.443E+06 S/E= 0.112E-06 7 7 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 8 19 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. 10 21 GNLS CDAT1 MXCY 3 11 22 GNLS SHFTS 0.01 0.00 … … 42 53 EXPR ATYP 4 O 3 1.09 0.89 1.45 96 1.40 43 54 EXPR NPHAS 1 0 0 0 0 0 0 0 0 44 REFN GDNFT Reduced CHI**2 = 3.22 7for 28 variables45 REFN RPOWD 0.1005 0.0766 5750 184 63. 0.0000 0.0000 046 REFN STATS Cycle 1 2 There were 5750 observations. Total CHI**2 = 1.8463E+0455 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 47 58 CRS1 PNAM fap 48 59 CRS1 NATOM 7 49 CRS1 ABC 9.371725 9.371725 6.885868 Y 0 60 CRS1 ABC 9.371724 9.371724 6.885867 Y 0 61 CRS1 ABCSIG 0.000036 0.000036 0.000037 50 62 CRS1 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 63 CRS1 ANGSIG 0.0000 0.0000 0.0000 64 CRS1 AT 1A CA 0.333333 0.666667 0.001913 1.000000CA1 4 000 65 CRS1 AT 1B 0.006079 I XU 66 CRS1 AT 2A CA 0.241976 0.992603 0.250000 1.000000CA2 6 000 67 CRS1 AT 2B 0.004561 I XU 68 CRS1 AT 3A P 0.397416 0.367704 0.250000 1.000000P3 6 000 69 CRS1 AT 3B 0.003978 I XU 57 70 CRS1 AT 4A F 0.000000 0.000000 0.250000 1.000000F4 2 000 58 CRS1 AT 4B 0.013 903I XU59 CRS1 AT 5A O 0.3250 32 0.4847450.250000 1.000000O5 6 00060 CRS1 AT 5B 0.00 5059I XU61 CRS1 AT 6A O 0.5914 59 0.4699800.250000 1.000000O6 6 00062 CRS1 AT 6B 0.006 562I XU63 CRS1 AT 7A O 0.3395 40 0.258134 0.070661 1.000000O7 12 00064 CRS1 AT 7B 0.0067 53 I XU71 CRS1 AT 4B 0.013850 I XU 72 CRS1 AT 5A O 0.325053 0.484763 0.250000 1.000000O5 6 000 73 CRS1 AT 5B 0.004916 I XU 74 CRS1 AT 6A O 0.591494 0.469954 0.250000 1.000000O6 6 000 75 CRS1 AT 6B 0.006609 I XU 76 CRS1 AT 7A O 0.339510 0.258126 0.070641 1.000000O7 12 000 77 CRS1 AT 7B 0.006713 I XU 65 78 CRS1 CELVOL 523.755 0.005 66 79 CRS1 CHMF 1 CA 5.00 … … 75 88 HAP1 1PHSFR 1.0000 N 0 76 89 HAP1 1PRCF 2 18 0.01000 0NNNYYNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNN 77 HAP1 1PRCF 1 0.200000E+01 -0.200000E+01 0.500000E+01 0.335 536E+0178 HAP1 1PRCF 2 0.24 7468E+01 0.000000E+00 0.000000E+00 0.490113E+0190 HAP1 1PRCF 1 0.200000E+01 -0.200000E+01 0.500000E+01 0.335183E+01 91 HAP1 1PRCF 2 0.248803E+01 0.000000E+00 0.000000E+00 0.490166E+01 79 92 HAP1 1PRCF 3 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 80 93 HAP1 1PRCF 4 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 … … 82 95 HAP1 1PREFO1 1.000000 1.000000 0.000000 0.000000 1.000000 NN 0 0 83 96 HAP1 1RADDAM 0.00000E+00 N 0 0.00 84 HST 1 HFIL c:\gsas\class\data\fap.xra97 HST 1 HFIL fap.xra 85 98 HST 1 HNAM 15.000 .020 90.000 PS1286 90MR21 Y286 DOUBLE T=19X2 1 86 99 HST 1 IFIL c:\gsas\class\parm\inst_xry.prm 87 100 HST 1 BANK 1 88 HST 1 BIGFO 0.1374 35E+06101 HST 1 BIGFO 0.137403E+06 89 102 HST 1 CHANS 0 1 5750 73092096 5753 0 0 90 103 HST 1 EPHAS 0 0 0 0 0 0 0 0 0 Y … … 97 110 HST 1 NPHAS 1 0 0 0 0 0 0 0 0 98 111 HST 1 NREF 660 0.8499 Y Y 99 HST 1 R-FAC 654 0.068 70 7.435812E+06100 HST 1 RPOWD 0.1005 0.0766 5750 184 63. 0.0000 0.0000 0112 HST 1 R-FAC 654 0.06830 7.393183E+06 113 HST 1 RPOWD 0.1005 0.0766 5750 18448. 0.0000 0.0000 0 101 114 HST 1 TRNGE 15.00000 129.98000 102 115 HST 1 WREXP 0.0561 103 116 HST 1ABSCOR 0.000000E+00 0.000000E+00 N 0 104 117 HST 1BAKGD 5 3 Y 0 Y 105 HST 1BAKGD1 0.41 6526E+02 0.702634E+03 0.343328E+01118 HST 1BAKGD1 0.418073E+02 0.702330E+03 0.340611E+01 106 119 HST 1CHI 0.0000 107 120 HST 1DETAZM 0.0000 … … 109 122 HST 1EXC 2 130.000 1000.000 110 123 HST 1EXMNMX 1.00000 1.00000 111 HST 1HSCALE 96.6 11Y 0124 HST 1HSCALE 96.636 Y 0 112 125 HST 1I HEAD DUMMY INCIDENT SPECTRUM FOR X-RAY DIFFRACTOMETER 113 126 HST 1I ITYP 0 0.0000 180.0000 1 … … 119 132 HST 1PRCF11 2.000000E+00 -2.000000E+00 5.000000E+00 1.000000E+00 120 133 HST 1PRCF12 1.000000E+00 0.000000E+00 121 HST 1RSP 0.0609 0.076 8 0.0812 0.0809 0.0802 0.0736 0.0788 0.0814 0.1039122 HST 1RSPA 0.080 8 0.0718 0.0758 0.0735 0.0670 0.0677 0.0737 0.0774 0.0944134 HST 1RSP 0.0609 0.0767 0.0810 0.0812 0.0820 0.0736 0.0788 0.0811 0.1027 135 HST 1RSPA 0.0807 0.0717 0.0756 0.0738 0.0690 0.0677 0.0736 0.0771 0.0935 123 136 HST 1RSPTT 15.00 27.76 40.54 53.32 66.10 78.86 91.64104.42117.20129.98 124 HST 1RSPW 0.0793 0.100 7 0.1051 0.1034 0.1124 0.0966 0.1010 0.1033 0.1317125 HST 1RSPWA 0.099 4 0.0892 0.0943 0.0869 0.0834 0.0832 0.0901 0.0949 0.1120137 HST 1RSPW 0.0793 0.1006 0.1049 0.1038 0.1137 0.0966 0.1011 0.1028 0.1301 138 HST 1RSPWA 0.0993 0.0891 0.0941 0.0873 0.0855 0.0832 0.0900 0.0946 0.1110 126 139 HST 1TRMNMX 1.00000 1.00000 127 140 ZZZZZZZZZZZZ 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 2528 2528 atNo += len(atypes) 2529 2529 return atNo 2530 2530 2531 2531 def GetAtomM(Xdata,SGData): 2532 2532 Mdata = [] … … 2593 2593 continue #skips March Dollase 2594 2594 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): 2598 2609 ''' Compute structure factors for all h,k,l for phase 2599 2610 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 2603 2621 ''' 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 Icalc2609 2622 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 2614 2628 MDaxis = parmDict['0:MDaxis'] 2615 2629 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]) 2623 2638 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] 2627 2641 M = np.inner(Srefs,np.inner(rcov,Srefs)) 2642 tsum += (time.time()-t0) 2628 2643 return M/parmDict['sumFosq']**2 2629 2644 2630 2645 sq8ln2 = np.sqrt(8*np.log(2)) 2631 2646 sq2pi = np.sqrt(2*np.pi) … … 2635 2650 Gmat = G2lat.cell2Gmat(generalData['Cell'][1:7])[0] 2636 2651 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']))] 2637 2654 fixAtoms = data['Atoms'] #if any 2638 2655 cx,ct,cs = generalData['AtomPtrs'][:3] … … 2673 2690 aTypes = list(aTypes) 2674 2691 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] 2676 2694 FFtables = G2el.GetFFtable(aTypes) 2677 2695 refs = [] 2696 allFF = [] 2678 2697 sumFosq = 0 2679 2698 if 'PWDR' in reflName: … … 2683 2702 sig = G2pwd.getgamFW(sig,gam)/sq8ln2 #--> sig from FWHM 2684 2703 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]) 2688 2706 sumFosq += f*m 2689 2707 nRef = len(refs) … … 2709 2727 if d >= MCSA['dmin'] and v: #skip unrefined ones 2710 2728 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.]) 2714 2731 sumFosq += f*m 2715 2732 nRef = len(refs) … … 2741 2758 if d >= MCSA['dmin']: 2742 2759 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.]) 2746 2762 sumFosq += f*m 2747 2763 nRef = len(refs) 2748 2764 rcov = np.identity(len(refs)) 2765 allFF = np.array(allFF).T 2766 refs = np.array(refs).T 2749 2767 print ' Minimum d-spacing used: %.2f No. reflections used: %d'%(MCSA['dmin'],nRef) 2750 2768 print ' Number of parameters varied: %d'%(len(varyList)) … … 2752 2770 x0 = [parmDict[val] for val in varyList] 2753 2771 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), 2755 2773 schedule=MCSA['Algorithm'], full_output=True, 2756 2774 T0=MCSA['Annealing'][0], Tf=MCSA['Annealing'][1],dwell=MCSA['Annealing'][2], -
trunk/GSASIIphsGUI.py
r1045 r1051 4419 4419 Page = G2frame.dataDisplay.FindPage('MC/SA') 4420 4420 G2frame.dataDisplay.SetSelection(Page) 4421 G2plt.PlotStructure(G2frame,data) 4421 4422 wx.CallAfter(UpdateMCSA) 4422 G2plt.PlotStructure(G2frame,data)4423 4423 4424 4424 def OnMCSAaddAtom(event): -
trunk/fsource/pypowder.for
r978 r1051 182 182 END 183 183 184 SUBROUTINE PYSETUPSINTAB()185 CALL SETUPSINTAB186 RETURN187 END188 189 SUBROUTINE PYMDCALC(MDVAL,MDAXIS,NUNIQ,UNIQ,G,MDCORR)190 Cf2py intent(in) MDVAL191 Cf2py intent(in) MDAXIS192 Cf2py intent(in) NUNIQ193 cf2py depend(NUNIQ) UNIQ194 Cf2py intent(in) G195 Cf2py intent(out) MDCORR196 197 INTEGER*4 NUNIQ198 REAL*8 MDVAL,MDAXIS(0:2),UNIQ(0:3*NUNIQ-1),G(3,3),MDCORR199 200 CALL MDCALC(MDVAL,MDAXIS,G,NUNIQ,UNIQ,MDCORR)201 RETURN202 END203 204 SUBROUTINE PYMCSASFCALC(INV,NTD,TDATA,MDATA,XDATA,MUL,NFFS,FFS,205 1 NUNIQ,UNIQ,PHI,ICALC)206 Cf2py intent(in) INV207 Cf2py intent(in) NTD208 Cf2py intent(in) TDATA209 cf2py depend(NTD) TDATA210 Cf2py intent(in) MDATA211 cf2py depend(NTD) MDATA212 Cf2py intent(in) XDATA213 cf2py depend(NTD) XDATA214 Cf2py intent(in) MUL215 Cf2py intent(in) NFFS216 Cf2py intent(in) FFS217 cf2py depend(NFFS) FFS218 Cf2py intent(in) NUNIQ219 Cf2py intent(in) UNIQ220 cf2py depend(NUNIQ) UNIQ221 Cf2py intent(in) PHI222 cf2py depend(NUNIQ) PHI223 Cf2py intent(out) ICALC224 225 LOGICAL*4 INV226 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 RETURN234 END235 236 SUBROUTINE PYMCSAMDSFCALC(INV,NTD,TDATA,MDATA,XDATA,237 1 MDVAL,MDAXIS,G,MUL,NFFS,FFS,NUNIQ,UNIQ,PHI,ICALC)238 Cf2py intent(in) INV239 Cf2py intent(in) NTD240 Cf2py intent(in) TDATA241 cf2py depend(NTD) TDATA242 Cf2py intent(in) MDATA243 cf2py depend(NTD) MDATA244 Cf2py intent(in) XDATA245 cf2py depend(NTD) XDATA246 Cf2py intent(in) MDVAL247 Cf2py intent(in) MDAXIS248 Cf2py intent(in) G249 Cf2py intent(in) MUL250 Cf2py intent(in) NFFS251 Cf2py intent(in) FFS252 cf2py depend(NFFS) FFS253 Cf2py intent(in) NUNIQ254 Cf2py intent(in) UNIQ255 cf2py depend(NUNIQ) UNIQ256 Cf2py intent(in) PHI257 cf2py depend(NUNIQ) PHI258 Cf2py intent(out) ICALC259 260 LOGICAL*4 INV261 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 MDCORR266 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*MDCORR271 RETURN272 END273 274 184 C Fortran (fast) linear interpolation -- B.H. Toby 9/2011 275 185 SUBROUTINE PYFINTERP(NIN,XIN,YIN,NOUT,XOUT,YOUT)
Note: See TracChangeset
for help on using the changeset viewer.