Ignore:
Timestamp:
Mar 26, 2012 11:26:28 AM (11 years ago)
Author:
srkline
Message:

Changes to the real-space modeling to sped up the drawing of cylinders, and to provide a few more examples of scritped, unattended calculations, and saving the 3D matrix.

File:
1 edited

Legend:

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

    r840 r849  
    286286        numx=DimSize(mat,0) 
    287287        numy=DimSize(mat,1) 
    288         for(ii=0;ii<numx;ii+=1) 
    289                 for(jj=0;jj<numy;jj+=1) 
     288         
     289        Variable x1,x2,y1,y2 
     290        x1 = xc - trunc(rad/grid) - 2 
     291        x2 = xc + trunc(rad/grid) + 2 
     292        y1 = yc - trunc(rad/grid) - 2 
     293        y2 = yc + trunc(rad/grid) + 2 
     294 
     295         
     296        y1 = y1 < 0 ? 0 : y1 
     297        x1 = x1 < 0 ? 0 : x1 
     298         
     299        y2 = y2 > numy ? numy : y2 
     300        x2 = x2 > numx ? numx : x2 
     301         
     302        for(ii=x1;ii<x2;ii+=1) 
     303                for(jj=y1;jj<y2;jj+=1) 
    290304                                dik=sqrt( (ii-xc)^2+(jj-yc)^2)*grid 
    291305                                if(dik<=rad) 
     
    294308                endfor 
    295309        endfor 
     310         
     311//      for(ii=0;ii<numx;ii+=1) 
     312//              for(jj=0;jj<numy;jj+=1) 
     313//                              dik=sqrt( (ii-xc)^2+(jj-yc)^2)*grid 
     314//                              if(dik<=rad) 
     315//                                      mat[ii][jj][zloc] = fill 
     316//                              endif 
     317//              endfor 
     318//      endfor 
    296319         
    297320        return(0)        
     
    307330        WAVE mat 
    308331        Variable grid,rad,xc,yc,zc,len,fill 
    309          
     332 
     333//      Variable tref = startMSTimer 
     334                 
    310335        Variable ii,pts 
    311336        //put half the length above - half below 
     
    314339                FillYZCircle(mat,grid,rad,yc,zc,ii,fill) 
    315340        endfor 
    316          
     341 
     342//      Variable ms = stopMSTimer(tref) 
     343//      print "Time elapsed = ", ms/1e6, "s" 
     344                 
    317345        return(0)        
    318346End 
     
    328356        numy=DimSize(mat,0) 
    329357        numz=DimSize(mat,1) 
    330         for(ii=0;ii<numy;ii+=1) 
    331                 for(jj=0;jj<numz;jj+=1) 
     358         
     359        Variable y1,y2,z1,z2 
     360        y1 = yc - trunc(rad/grid) - 2 
     361        y2 = yc + trunc(rad/grid) + 2 
     362        z1 = zc - trunc(rad/grid) - 2 
     363        z2 = zc + trunc(rad/grid) + 2 
     364         
     365        y1 = y1 < 0 ? 0 : y1 
     366        z1 = z1 < 0 ? 0 : z1 
     367         
     368        y2 = y2 > numy ? numy : y2 
     369        z2 = z2 > numz ? numz : z2 
     370         
     371 
     372        for(ii=y1;ii<y2;ii+=1) 
     373                for(jj=z1;jj<z2;jj+=1) 
    332374                                dik=sqrt( (ii-yc)^2+(jj-zc)^2)*grid 
    333375                                if(dik<=rad) 
     
    336378                endfor 
    337379        endfor 
    338          
     380 
     381 
     382////slow way             
     383//      for(ii=0;ii<numy;ii+=1) 
     384//              for(jj=0;jj<numz;jj+=1) 
     385//                              dik=sqrt( (ii-yc)^2+(jj-zc)^2)*grid 
     386//                              if(dik<=rad) 
     387//                                      mat[xloc][ii][jj] = fill 
     388//                              endif 
     389//              endfor 
     390//      endfor 
     391 
    339392        return(0)        
    340393End 
     
    371424        numx=DimSize(mat,0) 
    372425        numz=DimSize(mat,1) 
    373         for(ii=0;ii<numx;ii+=1) 
    374                 for(jj=0;jj<numz;jj+=1) 
     426         
     427        Variable x1,x2,z1,z2 
     428        x1 = xc - trunc(rad/grid) - 2 
     429        x2 = xc + trunc(rad/grid) + 2 
     430        z1 = zc - trunc(rad/grid) - 2 
     431        z2 = zc + trunc(rad/grid) + 2 
     432 
     433         
     434        z1 = z1 < 0 ? 0 : z1 
     435        x1 = x1 < 0 ? 0 : x1 
     436         
     437        z2 = z2 > numz ? numz : z2 
     438        x2 = x2 > numx ? numx : x2 
     439         
     440        for(ii=x1;ii<x2;ii+=1) 
     441                for(jj=z1;jj<z2;jj+=1) 
    375442                                dik=sqrt( (ii-xc)^2+(jj-zc)^2)*grid 
    376443                                if(dik<=rad) 
     
    379446                endfor 
    380447        endfor 
     448         
     449//      for(ii=0;ii<numx;ii+=1) 
     450//              for(jj=0;jj<numz;jj+=1) 
     451//                              dik=sqrt( (ii-xc)^2+(jj-zc)^2)*grid 
     452//                              if(dik<=rad) 
     453//                                      mat[ii][yloc][jj] = fill 
     454//                              endif 
     455//              endfor 
     456//      endfor 
    381457         
    382458        return(0)        
     
    564640Function ParseMatrix3D_rho(mat) 
    565641        Wave mat 
    566          
     642 
     643//      Variable tref = startMSTimer 
     644                 
    567645        Variable nptx,npty,nptz,ii,jj,kk,num 
    568646         
     
    589667                endfor 
    590668        endfor 
    591          
     669 
     670 
     671//      Variable ms = stopMSTimer(tref) 
     672//      print "Time elapsed = ", ms/1e6, "s" 
     673                 
    592674        return(0) 
    593675End 
Note: See TracChangeset for help on using the changeset viewer.