Ignore:
Timestamp:
Jul 25, 2007 3:07:20 PM (16 years ago)
Author:
srkline
Message:

Second round of changes to ipf files to (hopefully) complete the changes to bring all of the model functions to be:

  • this set of changes is for the "2006" set of models
  • AAO
  • new dependencies
  • smearing using structures
  • #if conditional compile for XOPS

-this needs to be FULLY tested for correctness and bugs
-packages are certainly still broken (data folders)

SRK 25 JUL 07

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00/NewModels_2006/LamellarFF.ipf

    r127 r128  
    3333        Edit parameters_LamellarFF, coef_LamellarFF 
    3434        ModifyTable width(parameters_LamellarFF)=160 
    35         ywave_LamellarFF  := LamellarFF(coef_LamellarFF, xwave_LamellarFF) 
     35         
     36        Variable/G root:g_LamellarFF 
     37        g_LamellarFF := LamellarFF(coef_LamellarFF, ywave_LamellarFF,xwave_LamellarFF) 
    3638        Display ywave_LamellarFF vs xwave_LamellarFF 
    3739        ModifyGraph marker=29, msize=2, mode=4 
     
    4345End 
    4446 
    45 // 
    46 //this macro sets up all the necessary parameters and waves that are 
    47 //needed to calculate the  smeared model function. 
    48 // 
    49 //no input parameters are necessary, it MUST use the experimental q-values 
    50 // from the experimental data read in from an AVE/QSIG data file 
    51 //////////////////////////////////////////////////// 
    52 Proc PlotSmeared_LamellarFF()                                                           //Lamellar 
     47// - sets up a dependency to a wrapper, not the actual SmearedModelFunction 
     48Proc PlotSmeared_LamellarFF(str)                                                                 
     49        String str 
     50        Prompt str,"Pick the data folder conatining the resolution you want",popup,getAList(4) 
    5351         
    54         // if no gQvals wave, data must not have been loaded => abort 
    55         If(ResolutionWavesMissing())            //part of GaussUtils 
     52        // if any of the resolution waves are missing => abort 
     53        if(ResolutionWavesMissingDF(str))               //updated to NOT use global strings (in GaussUtils) 
    5654                Abort 
    5755        endif 
     56         
     57        SetDataFolder $("root:"+str) 
    5858         
    5959        // Setup parameter table for model function 
     
    6464        // output smeared intensity wave, dimensions are identical to experimental QSIG values 
    6565        // make extra copy of experimental q-values for easy plotting 
    66         Duplicate/O $gQvals smeared_LamellarFF,smeared_qvals                            // 
     66        Duplicate/O $(str+"_q") smeared_LamellarFF,smeared_qvals                                // 
    6767        SetScale d,0,0,"1/cm",smeared_LamellarFF                                                        // 
    68  
    69         smeared_LamellarFF := LamellarFF_Smeared(smear_coef_LamellarFF,$gQvals)         // SMEARED function name 
     68                                         
     69        Variable/G gs_LamellarFF=0 
     70        gs_LamellarFF := fLamellarFF_Smeared(smear_coef_LamellarFF,smeared_LamellarFF,smeared_qvals)    //this wrapper fills the STRUCT 
     71         
    7072        Display smeared_LamellarFF vs smeared_qvals                                                                     // 
    7173        ModifyGraph log=1,marker=29,msize=2,mode=4 
     
    7375        Label left "I(q) (cm\\S-1\\M)" 
    7476        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2) 
    75 End     // end macro  
     77         
     78        SetDataFolder root: 
     79End 
     80//////////////////////////////////////////////////// 
     81         
     82 
     83 
     84//AAO version, uses XOP if available 
     85// simply calls the original single point calculation with 
     86// a wave assignment (this will behave nicely if given point ranges) 
     87Function LamellarFF(cw,yw,xw) : FitFunc 
     88        Wave cw,yw,xw 
     89         
     90#if exists("LamellarFFX") 
     91        yw = LamellarFFX(cw,xw) 
     92#else 
     93        yw = fLamellarFF(cw,xw) 
     94#endif 
     95        return(0) 
     96End 
    7697 
    7798//CH#1 
     
    80101// based on the wave (array) of parameters that you send it (w) 
    81102// 
    82 Function LamellarFF(w,x) : FitFunc 
     103Function fLamellarFF(w,x) : FitFunc 
    83104        Wave w 
    84105        Variable x 
     
    115136End 
    116137 
    117 //the smeared model calculation 
    118 Function LamellarFF_Smeared(w,x) :FitFunc 
    119         Wave w 
    120         Variable x 
     138//wrapper to calculate the smeared model as an AAO-Struct 
     139// fills the struct and calls the ususal function with the STRUCT parameter 
     140// 
     141// used only for the dependency, not for fitting 
     142// 
     143Function fLamellarFF_Smeared(coefW,yW,xW) 
     144        Wave coefW,yW,xW 
    121145         
    122         Variable ans 
    123         SVAR sq = gSig_Q 
    124         SVAR qb = gQ_bar 
    125         SVAR sh = gShadow 
    126         SVAR gQ = gQVals 
     146        String str = getWavesDataFolder(yW,0) 
     147        String DF="root:"+str+":" 
    127148         
    128         ans = Smear_Model_20(LamellarFF,$sq,$qb,$sh,$gQ,w,x)     
    129  
    130         return(ans) 
     149        WAVE resW = $(DF+str+"_res") 
     150         
     151        STRUCT ResSmearAAOStruct fs 
     152        WAVE fs.coefW = coefW    
     153        WAVE fs.yW = yW 
     154        WAVE fs.xW = xW 
     155        WAVE fs.resW = resW 
     156         
     157        Variable err 
     158        err = LamellarFF_Smeared(fs) 
     159         
     160        return (0) 
    131161End 
    132162 
     163//the smeared model calculation 
     164Function LamellarFF_Smeared(s) :FitFunc 
     165        Struct ResSmearAAOStruct &s 
     166 
     167//      the name of your unsmeared model (AAO) is the first argument 
     168        s.yW = Smear_Model_20(LamellarFF,s.coefW,s.xW,s.resW) 
     169 
     170        return(0) 
     171End 
Note: See TracChangeset for help on using the changeset viewer.