Ignore:
Timestamp:
Aug 18, 2009 1:56:49 PM (15 years ago)
Author:
Jae Cho <jhjcho@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
eddff027
Parents:
7d11b81
Message:

fixed problems in 2d

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/c_extensions/stacked_disks.c

    r5068697 r3c102d4  
    1919double stacked_disks_analytical_1D(StackedDisksParameters *pars, double q) { 
    2020        double dp[10]; 
    21          
     21 
    2222        // Fill paramater array 
    2323        dp[0] = pars->scale; 
    2424        dp[1] = pars->radius; 
    25         dp[2] = pars->length; 
    26         dp[3] = pars->thickness; 
     25        dp[2] = pars->core_thick; 
     26        dp[3] = pars->layer_thick; 
    2727        dp[4] = pars->core_sld; 
    2828        dp[5] = pars->layer_sld; 
    2929        dp[6] = pars->solvent_sld; 
    30         dp[7] = pars->nlayers; 
    31         dp[8] = pars->spacing; 
     30        dp[7] = pars->n_stacking; 
     31        dp[8] = pars->sigma_d; 
    3232        dp[9] = pars->background; 
    3333 
    3434        // Call library function to evaluate model 
    35         return StackedDiscs(dp, q);      
     35        return StackedDiscs(dp, q); 
    3636} 
    3737/** 
     
    4545        q = sqrt(qx*qx+qy*qy); 
    4646    return stacked_disks_analytical_2D_scaled(pars, q, qx/q, qy/q); 
    47 }  
     47} 
    4848 
    4949 
     
    5757double stacked_disks_analytical_2D(StackedDisksParameters *pars, double q, double phi) { 
    5858    return stacked_disks_analytical_2D_scaled(pars, q, cos(phi), sin(phi)); 
    59 }  
    60          
     59} 
     60 
    6161/** 
    6262 * Function to evaluate 2D scattering function 
     
    7171        double q_z; 
    7272        double alpha, vol, cos_val; 
    73         double d, dum; 
     73        double d, dum, halfheight; 
    7474        double answer; 
    75          
    76          
     75 
     76 
    7777 
    7878    // parallelepiped orientation 
     
    8080    cyl_y = sin(pars->axis_theta) * sin(pars->axis_phi); 
    8181    cyl_z = cos(pars->axis_theta); 
    82       
     82 
    8383    // q vector 
    8484    q_z = 0; 
    85          
     85 
    8686    // Compute the angle btw vector q and the 
    8787    // axis of the parallelepiped 
    8888    cos_val = cyl_x*q_x + cyl_y*q_y + cyl_z*q_z; 
    89      
     89 
    9090    // The following test should always pass 
    9191    if (fabs(cos_val)>1.0) { 
     
    9393        return 0; 
    9494    } 
    95      
     95 
    9696    // Note: cos(alpha) = 0 and 1 will get an 
    9797    // undefined value from Stackdisc_kern 
     
    9999 
    100100        // Call the IGOR library function to get the kernel 
    101         dum =0.1; 
    102         d= 0.1; 
     101        d = 2 * pars->layer_thick + pars->core_thick; 
     102        halfheight = pars->core_thick/2.0; 
     103        dum =alpha ; 
    103104        answer = Stackdisc_kern(q, pars->radius, pars->core_sld,pars->layer_sld, 
    104                 pars->solvent_sld,pars->length,pars->thickness, dum, pars->spacing, d,pars->nlayers); 
    105          
     105                pars->solvent_sld, halfheight, pars->layer_thick, dum, pars->sigma_d, d, pars->n_stacking)/sin(alpha); 
     106 
    106107        // Multiply by contrast^2 
    107108        //answer *= pars->contrast*pars->contrast; 
    108          
     109 
    109110        //normalize by staked disks volume 
    110         //NOTE that for this (Fournet) definition of the integral, one must MULTIPLY by Vparallel 
    111     vol = acos(-1.0) * pars->radius * pars->radius * pars->length; 
    112         answer *= vol; 
    113          
     111    vol = acos(-1.0) * pars->radius * pars->radius * d * pars->n_stacking; 
     112        answer /= vol; 
     113 
    114114        //convert to [cm-1] 
    115115        answer *= 1.0e8; 
    116          
     116 
    117117        //Scale 
    118118        answer *= pars->scale; 
    119          
     119 
    120120        // add in the background 
    121121        answer += pars->background; 
    122          
     122 
    123123        return answer; 
    124124} 
    125      
    126125 
     126 
Note: See TracChangeset for help on using the changeset viewer.