Ignore:
Timestamp:
Feb 29, 2012 11:36:57 AM (11 years ago)
Author:
srkline
Message:

fixing the shape filling functions to explicitly take fill as a parameter, and make the default fill value = 10 == 10 e-7 A-2

More additions to the RealSpeca? help file

Location:
sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_ConcentratedSpheres.ipf

    r836 r840  
    192192                         
    193193                                //try to put the sphere there, and keep trying forever 
    194                                 err = FillSphereRadiusNoOverlap(m,grid,tmprad,xt,yt,zt,1) 
     194                                err = FillSphereRadiusNoOverlap(m,grid,tmprad,xt,yt,zt,10) 
    195195                                 
    196196//                              if(fails == 10) 
     
    312312         
    313313//// type 0 
    314         fill = 1 
     314        fill = 10 
    315315        rad = 100 
    316316        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     
    340340         
    341341//      type 2 
    342         fill = 1 
     342        fill = 10 
    343343        rad = 150 
    344344        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     
    368368 
    369369// type 3 
    370         fill = 3 
     370        fill = 30 
    371371        rad = 150 
    372372        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    373         fill = 2 
     373        fill = 20 
    374374        rad = 100 
    375375        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    376         fill = 1 
     376        fill = 10 
    377377        rad = 50 
    378378        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     
    380380        FFTEraseMatrixButtonProc("") 
    381381 
    382         fill = 3 
     382        fill = 30 
    383383        rad = 120 
    384384        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    385         fill = 2 
     385        fill = 20 
    386386        rad = 100 
    387387        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    388         fill = 1 
     388        fill = 10 
    389389        rad = 50 
    390390        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     
    392392        FFTEraseMatrixButtonProc("") 
    393393         
    394         fill = 3 
     394        fill = 30 
    395395        rad = 100 
    396396        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    397         fill = 2 
     397        fill = 20 
    398398        rad = 70 
    399399        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    400         fill = 1 
     400        fill = 10 
    401401        rad = 50 
    402402        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     
    404404        FFTEraseMatrixButtonProc("") 
    405405 
    406         fill = 3 
     406        fill = 30 
    407407        rad = 80 
    408408        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    409         fill = 2 
     409        fill = 20 
    410410        rad = 70 
    411411        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    412         fill = 1 
     412        fill = 10 
    413413        rad = 50 
    414414        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     
    416416        FFTEraseMatrixButtonProc("") 
    417417 
    418         fill = 3 
    419         rad = 50 
    420         FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    421         fill = 2 
     418        fill = 30 
     419        rad = 50 
     420        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
     421        fill = 20 
    422422        rad = 40 
    423423        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
    424         fill = 1 
     424        fill = 10 
    425425        rad = 30 
    426426        FillSphereRadius(mat,grid,rad,xc,yc,zc,fill) 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_ConnectedRods.ipf

    r798 r840  
    217217        Variable ranType 
    218218         
    219         Variable ii,np,frac,nocc 
     219        Variable ii,np,frac,nocc,fill 
    220220        Wave m=root:mat 
    221221        NVAR grid=root:FFT_T 
     
    224224        np = 0 
    225225        frac = 0 
     226        fill = 10 
    226227        for(ii=0;ii<nPass;ii+=1)                //number of averaging passes 
    227228                m=0 
    228229                 
    229230                if(ranType == 1) 
    230                         SobolFill3DMat(m,nPts) 
     231                        SobolFill3DMat(m,nPts,fill) 
    231232                else 
    232                         RandomFill3DMat(m,nPts) 
     233                        RandomFill3DMat(m,nPts,fill) 
    233234                endif 
    234235                ParseMatrix3D_rho(m)                            // get the triplets of points to connect 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_Cubes_Includes.ipf

    r838 r840  
    9393End 
    9494 
    95 Proc PutXAxisCoreShellCyl_HexGrid(w,rad,len,sep) 
     95Proc PutXAxisCoreShellCyl_HexGrid(w,rad,len,sep,fill) 
    9696        String w="mat" 
    97         Variable rad=30,len=300,sep=100 
     97        Variable rad=30,len=300,sep=100,fill=10 
    9898        Prompt w,"matrix" 
    9999        prompt rad,"radius of cylinders" 
    100100        prompt len,"length of cylinders" 
    101101        prompt sep,"center-to-center separation of cylinders" 
     102        Prompt fill,"fill SLD value" 
    102103         
    103         $w=0 
    104         X_CoreShellCylinderHexGrid($w,rad,len,sep) 
     104//      $w=0 
     105        X_CoreShellCylinderHexGrid($w,rad,len,sep,fill) 
    105106         
    106107        NumberOfPoints() 
    107108end 
    108109 
    109 Function X_CoreShellCylinderHexGrid(mat,rad,len,sep) 
     110Function X_CoreShellCylinderHexGrid(mat,rad,len,sep,fill) 
    110111        Wave mat 
    111112        variable rad,len                //length of cylinders 
    112113        Variable sep                    // EDGE separation, in same units as cylinder 
     114        Variable fill 
    113115         
     116        NVAR    solventSLD = root:FFT_SolventSLD 
    114117         
    115118        NVAR grid=root:FFT_T 
     
    119122        // fill a 2D plane with points 
    120123        Make/O/B/N=(np,np) plane 
    121         plane = 0 
     124        plane = solventSLD 
    122125 
    123126        spacing = round(sep/grid)               // so it's an integer 
    124         FillPlaneHexagonal(plane,spacing) 
     127        FillPlaneHexagonal(plane,spacing,fill) 
    125128         
    126129        // put it in the proper plane of the matrix 
     
    136139         
    137140        for(ii=0;ii<num;ii+=1) 
    138                 FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,1)               //cylinder 1 
     141                FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,fill)            //cylinder 1 
    139142        endfor 
    140143 
    141144// makes a crude core-shell cylinder     
    142145        for(ii=0;ii<num;ii+=1) 
    143                 FillXCylinder(mat,grid,rad-20,x3d[ii],y3d[ii],z3d[ii],len,3)            //cylinder 1 
     146                FillXCylinder(mat,grid,rad-20,x3d[ii],y3d[ii],z3d[ii],len,3*fill)               //cylinder 1 
    144147        endfor 
    145148         
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_Cylinder_2D_Fill.ipf

    r798 r840  
    113113 
    114114Proc Test2D() 
     115 
     116        Variable fill = 10 
     117         
    115118        Make/O/N=(100,100) plane 
    116119        DoWindow/F Plane_View 
     
    122125        endif 
    123126        plane=0 
    124         RandomPoints2D(plane,10) 
     127        RandomPoints2D(plane,10,fill) 
    125128End 
    126129 
     
    132135//for the 3D equivalent, see RandomFill3DMat(mat,num) 
    133136// 
    134 Function RandomPoints2D(w,num) 
     137Function RandomPoints2D(w,num,fill) 
    135138        Wave w 
    136139        variable num            //number of spheres to add 
     140        Variable fill 
    137141         
    138142        Variable row,col,ii,xt,yt,zt,fail=0 
     
    146150                yt=trunc(abs(enoise(col))) 
    147151                if( w[xt][yt] == 0 ) 
    148                         w[xt][yt] = 1 
     152                        w[xt][yt] = fill 
    149153                        ii+=1           //increment number of spheres actually added 
    150154                        //Print "point ",ii 
     
    161165 
    162166// the Sobol sequence MUST be initlalized before passing to thie routine 
    163 Function SobolPoints2D(w,num) 
     167Function SobolPoints2D(w,num,fill) 
    164168        Wave w 
    165169        variable num            //number of spheres to add 
     170        Variable fill 
    166171         
    167172        Variable row,col,ii,xt,yt,zt,fail=0 
     
    178183                xt = Sobol2D[0] *row 
    179184                yt = Sobol2D[1] *col 
    180                 w[xt][yt] = 1 
     185                w[xt][yt] = fill 
    181186        endfor 
    182187         
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_Cylinder_Fills.ipf

    r836 r840  
    1414 
    1515         
    16 Proc ConnectDots3D(w,np,maxNumConn,sobol) 
     16Proc ConnectDots3D(w,np,maxNumConn,sobol,fill) 
    1717        String w="mat" 
    18         Variable np=100,maxNumConn=2,sobol=1 
     18        Variable np=100,maxNumConn=2,sobol=1,fill=10 
    1919        Prompt w,"matrix" 
    2020        Prompt np,"number of points" 
    2121        prompt maxNumConn,"number of connections per point" 
    2222        Prompt sobol,"1=Sobol, 0=random" 
    23          
    24         $w=0 
     23        Prompt fill,"fill SLD value" 
     24         
     25//      $w=0 
    2526 
    2627        if(sobol) 
    27                 SobolFill3DMat($w,np) 
     28                SobolFill3DMat($w,np,fill) 
    2829        else 
    29                 RandomFill3DMat($w,np) 
     30                RandomFill3DMat($w,np,fill) 
    3031        endif 
    3132         
     
    3536        Make/O/N=(num) numConnection3D=0 
    3637        Make/O/T/N=(num) connectedTo3D="" 
    37         fConnectDots3D(maxNumConn) 
     38        fConnectDots3D(maxNumConn,fill) 
    3839end 
    3940 
    4041// connect the dots, no periodic boundary conditions 
    4142//thickness is set to 1 
    42 Function fConnectDots3D(maxNumConn) 
    43         Variable maxNumConn 
     43Function fConnectDots3D(maxNumConn,fill) 
     44        Variable maxNumConn,fill 
    4445         
    4546         
     
    6566                                connectedTo3D[ii] += num2str(nnInd)+"," 
    6667                                 
    67                                 ConnectPoints3D(mat, x3d[ii],y3d[ii],z3d[ii],x3d[nnInd],y3d[nnInd],z3d[nnInd],thick,1)          //always fill 
     68                                ConnectPoints3D(mat, x3d[ii],y3d[ii],z3d[ii],x3d[nnInd],y3d[nnInd],z3d[nnInd],thick,fill)               //always fill 
    6869                        endif 
    6970                endfor 
     
    231232// this implementation is a random walk, end-to-end connection 
    232233// 
    233 Function ConnectedRodFill(mat,len,num,periodic) 
     234Function ConnectedRodFill(mat,len,num,periodic,fill) 
    234235        Wave mat 
    235236        variable len,num                //length in direction, number of spheres to add 
    236237        Variable periodic               //==1 if periodic boundaries 
     238        Variable fill 
    237239         
    238240        Variable nptx,npty,nptz,ii,fail=0,nAdd 
     
    251253        dirVec[2] = PickDirection()  
    252254 
    253         nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic) 
     255        nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic,fill) 
    254256         
    255257        stVec = endVec          //end point is the new starting point 
     
    262264                        dirVec[1] = PickDirection()  
    263265                        dirVec[2] = PickDirection()  
    264                         nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic) 
     266                        nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic,fill) 
    265267                        stVec = endVec          //end point is the new starting point 
    266268 
     
    281283// 
    282284// 
    283 Function UnConnectedRodFill(mat,len,num,periodic) 
     285Function UnConnectedRodFill(mat,len,num,periodic,fill) 
    284286        Wave mat 
    285287        variable len,num                //length in direction, number of spheres to add 
    286288        Variable periodic               //==1 if periodic boundaries 
     289        Variable fill 
    287290         
    288291        Variable nptx,npty,nptz,ii,fail=0,nAdd 
     
    301304        dirVec[2] = PickDirection()  
    302305 
    303         nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic) 
     306        nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic,fill) 
    304307        //loop over remaining 
    305308        ii=nAdd 
     
    313316                dirVec[2] = PickDirection()  
    314317                //add as many spheres as possible in that direction 
    315                 nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic) 
     318                nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic,fill) 
    316319                ii+=nAdd 
    317320                //Print "point ",ii 
     
    335338// 
    336339// 
    337 Function AddSpheresInDirection(m,stVec,dirVec,endVec,nTry,periodic) 
     340Function AddSpheresInDirection(m,stVec,dirVec,endVec,nTry,periodic,fill) 
    338341        WAVE m,stVec,dirVec,endVec 
    339         Variable nTry,periodic 
     342        Variable nTry,periodic,fill 
    340343         
    341344        Variable added,nx,ny,nz,nDimx,nDimy,nDimz 
    342345         
     346        NVAR    solventSLD = root:FFT_SolventSLD 
     347 
    343348        nDimx=DimSize(m,0)-1 
    344349        nDimy=DimSize(m,1)-1 
     
    376381                Endif 
    377382                //add the point or exit 
    378                 if(m[nx][ny][nz]) 
     383                if(m[nx][ny][nz] != solventSLD) 
    379384                        break           //point is already occupied 
    380385                else 
    381                         m[nx][ny][nz] = 1 
     386                        m[nx][ny][nz] = fill 
    382387//                      nx +=1          //we'll back this off before returning 
    383388//                      ny +=1 
     
    393398End 
    394399 
    395 Proc PutRandomCylindersAtPoints(w,num,len,periodic) 
     400Proc PutRandomCylindersAtPoints(w,num,len,periodic,fill) 
    396401        String w="mat" 
    397         Variable num=1000,len=10,periodic=1 
     402        Variable num=1000,len=10,periodic=1,fill = 10 
    398403        Prompt w,"matrix" 
    399404        Prompt num,"number of starting points" 
    400405        prompt len,"length of cylinders" 
    401406        prompt periodic"1=periodic, 0=non-periodic boundaries" 
    402          
    403         $w=0 
    404         RandomFill3DMat($w,num) 
    405         CylindersAtPoints($w,len,periodic) 
     407        Prompt fill,"fill SLD value" 
     408 
     409         
     410//      $w=0 
     411        RandomFill3DMat($w,num,fill) 
     412        CylindersAtPoints($w,len,periodic,fill) 
    406413         
    407414        NumberOfPoints() 
    408415end 
    409416 
    410 Proc PutXAxisCylindersAtPoints(w,num,rad,len,periodic,sobol) 
     417Proc PutXAxisCylindersAtPoints(w,num,rad,len,periodic,sobol,fill) 
    411418        String w="mat" 
    412         Variable num=100,rad=20,len=300,periodic=1,sobol=1 
     419        Variable num=100,rad=20,len=300,periodic=1,sobol=1,fill=10 
    413420        Prompt w,"matrix" 
    414421        Prompt num,"number of starting points" 
     
    417424        prompt periodic,"1=periodic, 0=non-periodic boundaries" 
    418425        Prompt sobol,"1=Sobol, 0=random" 
    419          
    420         $w=0 
    421         X_CylindersAtPoints($w,num,rad,len,sobol,periodic) 
     426        Prompt fill,"fill SLD value" 
     427 
     428         
     429//      $w=0 
     430        X_CylindersAtPoints($w,num,rad,len,sobol,periodic,fill) 
    422431         
    423432        NumberOfPoints() 
    424433end 
    425434 
    426 Proc PutXAxisCylindersSquare(w,rad,len,sep) 
     435Proc PutXAxisCylindersSquare(w,rad,len,sep,fill) 
    427436        String w="mat" 
    428         Variable rad=20,len=300,sep=80 
     437        Variable rad=20,len=300,sep=80,fill=10 
    429438        Prompt w,"matrix" 
    430439        prompt rad,"radius of cylinders" 
    431440        prompt len,"length of cylinders" 
    432441        prompt sep,"center-to-center separation of cylinders" 
    433          
    434         $w=0 
    435         X_CylindersSquareGrid($w,rad,len,sep) 
     442        Prompt fill,"fill SLD value" 
     443 
     444         
     445//      $w=0 
     446        X_CylindersSquareGrid($w,rad,len,sep,fill) 
    436447         
    437448        NumberOfPoints() 
    438449end 
    439450 
    440 Proc PutXAxisCylindersHexagonal(w,rad,len,sep) 
     451Proc PutXAxisCylindersHexagonal(w,rad,len,sep,fill) 
    441452        String w="mat" 
    442         Variable rad=20,len=300,sep=80 
     453        Variable rad=20,len=300,sep=80,fill=10 
    443454        Prompt w,"matrix" 
    444455        prompt rad,"radius of cylinders" 
    445456        prompt len,"length of cylinders" 
    446457        prompt sep,"center-to-center separation of cylinders" 
    447          
    448         $w=0 
    449         X_CylindersHexagonalGrid($w,rad,len,sep) 
     458        Prompt fill,"fill SLD value" 
     459 
     460//      $w=0 
     461        X_CylindersHexagonalGrid($w,rad,len,sep,fill) 
    450462         
    451463        NumberOfPoints() 
    452464end 
    453465 
    454 Function CylindersAtPoints(mat,len,periodic) 
     466Function CylindersAtPoints(mat,len,periodic,fill) 
    455467        Wave mat 
    456468        variable len            //length in direction 
    457469        Variable periodic               //==1 if periodic boundaries 
     470        Variable fill 
    458471         
    459472        Make/O/B/N=3 stVec,dirVec,endVec 
     
    476489                stVec[1] = y3d[ii] 
    477490                stVec[2] = z3d[ii] 
    478                 nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic) 
     491                nAdd = AddSpheresInDirection(mat,stVec,dirVec,endVec,len,periodic,fill) 
    479492                //FillSphereRadius(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],1) 
    480493        endfor 
     
    485498/////////////// 
    486499                 
    487 Function X_CylindersAtPoints(mat,num,rad,len,sobol,periodic) 
     500Function X_CylindersAtPoints(mat,num,rad,len,sobol,periodic,fill) 
    488501        Wave mat 
    489502        variable num,rad,len            //length in direction 
    490503        Variable periodic               //==1 if periodic boundaries 
    491504        Variable sobol          //==1 if sobol selection of points (2D) 
    492          
     505        Variable fill 
     506         
     507        NVAR    solventSLD = root:FFT_SolventSLD 
    493508 
    494509        Variable np 
     
    497512        // fill a 2D plane with points 
    498513        Make/O/B/N=(np,np) plane 
    499         plane = 0 
     514        plane = solventSLD 
     515         
    500516        if(sobol) 
    501517                if(WaveExists($"SobolInit") == 0) 
     
    503519                        SobolX(-1,SobolInit) 
    504520                else 
    505                         SobolPoints2D(plane,num) 
     521                        SobolPoints2D(plane,num,fill) 
    506522                endif 
    507523        else 
    508                 RandomPoints2D(plane,num) 
     524                RandomPoints2D(plane,num,fill) 
    509525        endif 
    510526        // put it in the proper plane of the matrix 
     
    520536         
    521537        for(ii=0;ii<num;ii+=1) 
    522                 FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,1)               //cylinder 1 
     538                FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,fill)            //cylinder 1 
    523539        endfor 
    524540         
     
    527543 
    528544 
    529 Function X_CylindersSquareGrid(mat,rad,len,sep) 
     545Function X_CylindersSquareGrid(mat,rad,len,sep,fill) 
    530546        Wave mat 
    531547        variable rad,len                //length of cylinders 
    532548        Variable sep                    // EDGE separation, in same units as cylinder 
    533          
    534          
     549        Variable fill 
     550         
     551        NVAR    solventSLD = root:FFT_SolventSLD 
     552 
    535553        NVAR grid=root:FFT_T 
    536554        Variable np,spacing 
     
    539557        // fill a 2D plane with points 
    540558        Make/O/B/N=(np,np) plane 
    541         plane = 0 
     559        plane = solventSLD 
    542560 
    543561 
    544562        spacing = round(sep/grid)               // so it's an integer 
    545         FillPlaneSquareGrid(plane,spacing) 
     563        FillPlaneSquareGrid(plane,spacing,fill) 
     564         
     565 
    546566         
    547567        // put it in the proper plane of the matrix 
    548568        mat[np/2][][] = plane[q][r]                     // in the YZ plane 
    549          
     569 
     570                 
    550571        ParseMatrix3D_rho(mat) 
    551572        Wave x3d=x3d 
     
    557578         
    558579        for(ii=0;ii<num;ii+=1) 
    559                 FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,1)               //cylinder 1 
     580                FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,fill)            //cylinder 1 
    560581        endfor 
    561582         
     
    563584End 
    564585 
    565 Function X_CylindersHexagonalGrid(mat,rad,len,sep) 
     586Function X_CylindersHexagonalGrid(mat,rad,len,sep,fill) 
    566587        Wave mat 
    567588        variable rad,len                //length of cylinders 
    568589        Variable sep                    // EDGE separation, in same units as cylinder 
    569          
     590        Variable fill 
     591         
     592        NVAR    solventSLD = root:FFT_SolventSLD 
    570593         
    571594        NVAR grid=root:FFT_T 
     
    575598        // fill a 2D plane with points 
    576599        Make/O/B/N=(np,np) plane 
    577         plane = 0 
     600        plane = solventSLD 
    578601 
    579602        spacing = round(sep/grid)               // so it's an integer 
    580         FillPlaneHexagonal(plane,spacing) 
     603        FillPlaneHexagonal(plane,spacing,fill) 
    581604         
    582605        // put it in the proper plane of the matrix 
     
    592615         
    593616        for(ii=0;ii<num;ii+=1) 
    594                 FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,1)               //cylinder 1 
     617                FillXCylinder(mat,grid,rad,x3d[ii],y3d[ii],z3d[ii],len,fill)            //cylinder 1 
    595618        endfor 
    596619 
    597620//// makes a crude core-shell cylinder   
    598621//      for(ii=0;ii<num;ii+=1) 
    599 //              FillXCylinder(mat,grid,rad-10,x3d[ii],y3d[ii],z3d[ii],len,3)            //cylinder 1 
     622//              FillXCylinder(mat,grid,rad-10,x3d[ii],y3d[ii],z3d[ii],len,3*fill)               //cylinder 1 
    600623//      endfor 
    601624//       
     
    605628 
    606629 
    607 Function FillPlaneSquareGrid(w,sp) 
     630Function FillPlaneSquareGrid(w,sp,fill) 
    608631        Wave w 
    609632        Variable sp             //spacing in pixels 
     633        Variable fill 
    610634         
    611635        Variable np,ii,jj 
     
    615639        for(ii=sp;ii<(np-sp/2);ii+=sp) 
    616640                for(jj=sp;jj<(np-sp/2);jj+=sp) 
    617                         w[ii][jj] = 1 
     641                        w[ii][jj] = fill 
    618642                endfor 
    619643        endfor 
     
    624648 
    625649// sp is the  
    626 Function FillPlaneHexagonal(w,sp) 
     650Function FillPlaneHexagonal(w,sp,fill) 
    627651        Wave w 
    628652        Variable sp             //spacing in pixels 
    629          
    630         Variable np,ii,jj,xx,yy,fill 
     653        Variable fill 
     654         
     655        Variable np,ii,jj,xx,yy 
    631656         
    632657        np = DimSize(w,0) 
    633658         
    634         fill = 1 
     659 
    635660        // do even columns, then odds 
    636661        for(ii=sp;ii<(np-sp/2);ii+=(sp*sqrt(3)) ) 
     
    789814                rad = meanRad + gnoise(pd*meanRad) 
    790815                print ii,rad 
    791                 FillZCylinder(mat,grid,rad,xc,yc,zc,len,1)              //cylinder 1 
     816                FillZCylinder(mat,grid,rad,xc,yc,zc,len,10)             //cylinder 1 
    792817                rad = meanRad + gnoise(pd*meanRad) 
    793818                print ii,rad 
    794                 FillZCylinder(mat,grid,rad,xc,yc+aa,zc,len,1)           //cylinder 2 
     819                FillZCylinder(mat,grid,rad,xc,yc+aa,zc,len,10)          //cylinder 2 
    795820                rad = meanRad + gnoise(pd*meanRad) 
    796821                print ii,rad 
    797                 FillZCylinder(mat,grid,rad,xc+sina,yc+cosa,zc,len,1)            //cylinder 3 
     822                FillZCylinder(mat,grid,rad,xc+sina,yc+cosa,zc,len,10)           //cylinder 3 
    798823                Execute "DoFFT()" 
    799824                if(ii==0)        
     
    808833        rad = meanRad + gnoise(pd*meanRad) 
    809834        print rad 
    810         FillZCylinder(mat,grid,rad,xc,yc+aa,zc,len,1) 
     835        FillZCylinder(mat,grid,rad,xc,yc+aa,zc,len,10) 
    811836        Execute "DoFFT()" 
    812837        Duplicate/O iBin iBin_2 
     
    814839        rad = meanRad + gnoise(pd*meanRad) 
    815840        print rad 
    816         FillZCylinder(mat,grid,rad,xc+sina,yc+cosa,zc,len,1) 
     841        FillZCylinder(mat,grid,rad,xc+sina,yc+cosa,zc,len,10) 
    817842        Execute "DoFFT()" 
    818843        Duplicate/O iBin iBin_3 
     
    820845        rad = meanRad + gnoise(pd*meanRad) 
    821846        print rad 
    822         FillZCylinder(mat,grid,rad,xc+sina,yc-cosa,zc,len,1) 
     847        FillZCylinder(mat,grid,rad,xc+sina,yc-cosa,zc,len,10) 
    823848        Execute "DoFFT()" 
    824849        Duplicate/O iBin iBin_4 
     
    826851        rad = meanRad + gnoise(pd*meanRad) 
    827852        print rad 
    828         FillZCylinder(mat,grid,rad,xc,yc-aa,zc,len,1) 
     853        FillZCylinder(mat,grid,rad,xc,yc-aa,zc,len,10) 
    829854        Execute "DoFFT()" 
    830855        Duplicate/O iBin iBin_5 
     
    832857        rad = meanRad + gnoise(pd*meanRad) 
    833858        print rad 
    834         FillZCylinder(mat,grid,rad,xc-sina,yc-cosa,zc,len,1) 
     859        FillZCylinder(mat,grid,rad,xc-sina,yc-cosa,zc,len,10) 
    835860        Execute "DoFFT()" 
    836861        Duplicate/O iBin iBin_6 
     
    838863        rad = meanRad + gnoise(pd*meanRad) 
    839864        print rad 
    840         FillZCylinder(mat,grid,rad,xc-sina,yc+cosa,zc,len,1) 
     865        FillZCylinder(mat,grid,rad,xc-sina,yc+cosa,zc,len,10) 
    841866        Execute "DoFFT()" 
    842867        Duplicate/O iBin iBin_7 
     
    847872Proc Vary_N_In_Direction() 
    848873 
     874        Variable fill=10 
     875         
    849876        FFTEraseMatrixButtonProc("") 
    850         ConnectedRodFill(mat,2,30000*4,1) 
     877        ConnectedRodFill(mat,2,30000*4,1,fill) 
    851878        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    852879        Duplicate/O ival_XOP ival_XOP_2 
     
    854881         
    855882        FFTEraseMatrixButtonProc("") 
    856         ConnectedRodFill(mat,3,30000*4,1) 
     883        ConnectedRodFill(mat,3,30000*4,1,fill) 
    857884        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    858885        Duplicate/O ival_XOP ival_XOP_3 
     
    860887         
    861888        FFTEraseMatrixButtonProc("") 
    862         ConnectedRodFill(mat,4,30000*4,1) 
     889        ConnectedRodFill(mat,4,30000*4,1,fill) 
    863890        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    864891        Duplicate/O ival_XOP ival_XOP_4 
     
    866893         
    867894        FFTEraseMatrixButtonProc("") 
    868         ConnectedRodFill(mat,5,30000*4,1) 
     895        ConnectedRodFill(mat,5,30000*4,1,fill) 
    869896        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    870897        Duplicate/O ival_XOP ival_XOP_5 
     
    872899         
    873900        FFTEraseMatrixButtonProc("") 
    874         ConnectedRodFill(mat,6,30000*4,1) 
     901        ConnectedRodFill(mat,6,30000*4,1,fill) 
    875902        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    876903        Duplicate/O ival_XOP ival_XOP_6 
     
    878905         
    879906        FFTEraseMatrixButtonProc("") 
    880         ConnectedRodFill(mat,7,30000*4,1) 
     907        ConnectedRodFill(mat,7,30000*4,1,fill) 
    881908        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    882909        Duplicate/O ival_XOP ival_XOP_7 
     
    884911 
    885912        FFTEraseMatrixButtonProc("") 
    886         ConnectedRodFill(mat,8,30000*4,1) 
     913        ConnectedRodFill(mat,8,30000*4,1,fill) 
    887914        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    888915        Duplicate/O ival_XOP ival_XOP_8 
     
    890917         
    891918        FFTEraseMatrixButtonProc("") 
    892         ConnectedRodFill(mat,9,30000*4,1) 
     919        ConnectedRodFill(mat,9,30000*4,1,fill) 
    893920        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    894921        Duplicate/O ival_XOP ival_XOP_9 
     
    896923         
    897924        FFTEraseMatrixButtonProc("") 
    898         ConnectedRodFill(mat,10,30000*4,1) 
     925        ConnectedRodFill(mat,10,30000*4,1,fill) 
    899926        DoBinnedSpheresCalcFFTPanel(300,0.0001,0.5) 
    900927        Duplicate/O ival_XOP ival_XOP_10 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_FillMatrixShapes.ipf

    r836 r840  
    386386// - likely more "evenly" spread out than a random pick 
    387387// -- but is it too regular? 
    388 Function SobolFill3DMat(mat,num) 
     388Function SobolFill3DMat(mat,num,fill) 
    389389        Wave mat 
    390         variable num            //number of spheres to add 
     390        variable num,fill               //number of spheres to add 
    391391         
    392392        Variable row,col,lay,ii,xt,yt,zt,fail=0 
     
    407407                zt = trunc(lay*Sobol3D[2]) 
    408408                if( NoNeighbors(xt,yt,zt,mat) ) 
    409                         mat[xt][yt][zt] = 1 
     409                        mat[xt][yt][zt] = fill 
    410410                        ii+=1           //increment number of spheres actually added 
    411411                        //Print "point ",ii 
     
    422422 
    423423 
    424 Function RandomFill3DMat(mat,num) 
     424Function RandomFill3DMat(mat,num,fill) 
    425425        Wave mat 
    426         variable num            //number of spheres to add 
     426        variable num,fill               //number of spheres to add 
    427427         
    428428        Variable row,col,lay,ii,xt,yt,zt,fail=0 
     
    444444                zt=trunc(abs(enoise(lay))) 
    445445                if( NoNeighbors(xt,yt,zt,mat) ) 
    446                         mat[xt][yt][zt] = 1 
     446                        mat[xt][yt][zt] = fill 
    447447                        ii+=1           //increment number of spheres actually added 
    448448                        //Print "point ",ii 
     
    468468        Variable valid=1,invalid=0,xMax,yMax,zMax,ncont=0 
    469469         
    470         if(mat[xt][yt][zt])             //already occupied, trial is invalid 
     470        NVAR    solventSLD = root:FFT_SolventSLD 
     471 
     472        if(mat[xt][yt][zt] != solventSLD)               //already occupied, trial is invalid 
    471473                return (invalid) 
    472474        Endif 
     
    493495                                        //at central point, do nothing 
    494496                                else 
    495                                         if(mat[xi][yi][zi]) 
     497                                        if(mat[xi][yi][zi] != solventSLD) 
    496498                                                ncont+=1 
    497499                                        endif 
     
    667669         
    668670        WAVE mat = root:mat 
     671        NVAR solventSLD = root:FFT_SolventSLD 
    669672 
    670673        if(erase) 
    671                 mat = 0 
     674                mat = solventSLD 
    672675        endif 
    673676         
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_KR_Parser.ipf

    r800 r840  
    390390        Button button_0,pos={45,80},size={100,20},proc=KR_Show3DButtonProc,title="Show 3D" 
    391391        Button button_1,pos={46,51},size={100,20},proc=KR_Plot1DButtonProc,title="Plot 1D" 
    392         Button button_2,pos={178,80},size={120,20},proc=KR_DoCalcButtonProc,title="Do Calculation" 
     392        Button button_2,pos={178,50},size={150,20},proc=KR_GenerateButtonProc,title="Generate Structure" 
     393        Button button_4,pos={178,80},size={120,20},proc=KR_DoCalcButtonProc,title="Do Calculation" 
    393394        Button button_3,pos={600,50},size={120,20},proc=KR_DeleteRow,title="Delete Row(s)" 
    394395        ValDisplay valdisp_0,pos={339,16},size={80,13},title="FFT_T" 
     
    461462End 
    462463 
    463 Function KR_DoCalcButtonProc(ba) : ButtonControl 
     464 
     465//just generates the structure, no calculation 
     466Function KR_GenerateButtonProc(ba) : ButtonControl 
    464467        STRUCT WMButtonAction &ba 
    465468 
     
    493496         
    494497                        XYZV_FillMat(xoutW,youtW,ZoutW,sldW,1)                  //last 1 will erase the matrix 
     498//                      MakeTriplet(xoutW,youtW,zoutW) 
     499//               
     500//              // and the calculation. Assumes SLDs are all the same    
     501//                      NVAR qmin = root:KR_Qmin 
     502//                      NVAR qmax = root:KR_Qmax 
     503//                      NVAR npt = root:KR_Npt 
     504//                
     505//                      fDoBinned_KR_FFTPanel(npt,qmin,qmax) 
     506//       
     507                         
     508                        break 
     509        endswitch 
     510 
     511        return 0 
     512End 
     513 
     514 
     515 
     516Function KR_DoCalcButtonProc(ba) : ButtonControl 
     517        STRUCT WMButtonAction &ba 
     518 
     519        switch( ba.eventCode ) 
     520                case 2: // mouse up 
     521                        Wave xx=root:xx 
     522                        if(numpnts(xx)==0) 
     523                                return(0) 
     524                        endif 
     525                        wave yy=yy 
     526                        wave zz=zz 
     527                        wave rri=rri 
     528                        wave hti=hti 
     529//                      wave sbp=sbp 
     530                        wave rotx=rotx 
     531                        wave roty=roty 
     532                        wave sld=sld 
     533         
     534                        Duplicate/O xx, sbp 
     535                        NVAR FFT_T=root:FFT_T 
     536                        sbp = FFT_T 
     537                         
     538                        // parse 
     539                        KR_MultiCylinder(xx,yy,zz,rri,hti,sbp,rotx,roty,sld) 
     540 
     541                        // these are really just for display, or if the FFT of mat is wanted later. 
     542                        WAVE xoutW=root:xoutW 
     543                        WAVE youtW=root:youtW 
     544                        WAVE zoutW=root:zoutW 
     545                        WAVE sldW=root:sldW 
     546         
     547                        XYZV_FillMat(xoutW,youtW,ZoutW,sldW,1)                  //last 1 will erase the matrix 
    495548                        MakeTriplet(xoutW,youtW,zoutW) 
    496549                 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_Panel.ipf

    r838 r840  
    398398Proc FFTDrawSphereProc(matStr,rad,xc,yc,zc,fill)  
    399399        String matStr="mat" 
    400         Variable rad=25,xc=50,yc=50,zc=50,fill=1 
     400        Variable rad=25,xc=50,yc=50,zc=50,fill=10 
    401401        Prompt matStr,"the wave"                //,popup,WaveList("*",";","") 
    402402        Prompt rad,"enter real radius (A)" 
     
    404404        Prompt yc,"enter the Y-center" 
    405405        Prompt zc,"enter the Z-center" 
    406         Prompt fill,"1= fill, 0 = erase" 
     406        Prompt fill,"fill SLD value" 
    407407         
    408408        Variable grid=root:FFT_T 
     
    421421        String direction 
    422422        String matStr="mat" 
    423         Variable rad=25,len=300,xc=50,yc=50,zc=50,fill=1 
     423        Variable rad=25,len=300,xc=50,yc=50,zc=50,fill=10 
    424424        Prompt direction, "Direction", popup "X;Y;Z;" 
    425425        Prompt matStr,"the wave"                //,popup,WaveList("*",";","") 
     
    429429        Prompt yc,"enter the Y-center" 
    430430        Prompt zc,"enter the Z-center" 
    431         Prompt fill,"1= fill, 0 = erase" 
     431        Prompt fill,"fill SLD value" 
    432432         
    433433         
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_VoxelDisplay.ipf

    r836 r840  
    1313        ModifyGizmo startRecMacro 
    1414        AppendToGizmo voxelgram=root:mat,name=voxelgram0 
    15         ModifyGizmo ModifyObject=voxelgram0 property={ valueRGBA,0,1,1.5259e-05,0.195544,0.8,0.3} 
     15        ModifyGizmo ModifyObject=voxelgram0 property={ valueRGBA,0,10,1.5259e-05,0.195544,0.8,0.3} 
    1616        ModifyGizmo ModifyObject=voxelgram0 property={ mode,0} 
    1717        ModifyGizmo ModifyObject=voxelgram0 property={ pointSize,3} 
Note: See TracChangeset for help on using the changeset viewer.