Changeset 3c102d4 in sasview for sansmodels/src/sans/models/c_extensions/stacked_disks.c
- Timestamp:
- Aug 18, 2009 1:56:49 PM (15 years ago)
- 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
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_extensions/stacked_disks.c
r5068697 r3c102d4 19 19 double stacked_disks_analytical_1D(StackedDisksParameters *pars, double q) { 20 20 double dp[10]; 21 21 22 22 // Fill paramater array 23 23 dp[0] = pars->scale; 24 24 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; 27 27 dp[4] = pars->core_sld; 28 28 dp[5] = pars->layer_sld; 29 29 dp[6] = pars->solvent_sld; 30 dp[7] = pars->n layers;31 dp[8] = pars->s pacing;30 dp[7] = pars->n_stacking; 31 dp[8] = pars->sigma_d; 32 32 dp[9] = pars->background; 33 33 34 34 // Call library function to evaluate model 35 return StackedDiscs(dp, q); 35 return StackedDiscs(dp, q); 36 36 } 37 37 /** … … 45 45 q = sqrt(qx*qx+qy*qy); 46 46 return stacked_disks_analytical_2D_scaled(pars, q, qx/q, qy/q); 47 } 47 } 48 48 49 49 … … 57 57 double stacked_disks_analytical_2D(StackedDisksParameters *pars, double q, double phi) { 58 58 return stacked_disks_analytical_2D_scaled(pars, q, cos(phi), sin(phi)); 59 } 60 59 } 60 61 61 /** 62 62 * Function to evaluate 2D scattering function … … 71 71 double q_z; 72 72 double alpha, vol, cos_val; 73 double d, dum ;73 double d, dum, halfheight; 74 74 double answer; 75 76 75 76 77 77 78 78 // parallelepiped orientation … … 80 80 cyl_y = sin(pars->axis_theta) * sin(pars->axis_phi); 81 81 cyl_z = cos(pars->axis_theta); 82 82 83 83 // q vector 84 84 q_z = 0; 85 85 86 86 // Compute the angle btw vector q and the 87 87 // axis of the parallelepiped 88 88 cos_val = cyl_x*q_x + cyl_y*q_y + cyl_z*q_z; 89 89 90 90 // The following test should always pass 91 91 if (fabs(cos_val)>1.0) { … … 93 93 return 0; 94 94 } 95 95 96 96 // Note: cos(alpha) = 0 and 1 will get an 97 97 // undefined value from Stackdisc_kern … … 99 99 100 100 // 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 ; 103 104 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 106 107 // Multiply by contrast^2 107 108 //answer *= pars->contrast*pars->contrast; 108 109 109 110 //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 114 114 //convert to [cm-1] 115 115 answer *= 1.0e8; 116 116 117 117 //Scale 118 118 answer *= pars->scale; 119 119 120 120 // add in the background 121 121 answer += pars->background; 122 122 123 123 return answer; 124 124 } 125 126 125 126
Note: See TracChangeset
for help on using the changeset viewer.