Changeset 96b59384 in sasview for sansmodels/src/sans/models/c_models
- Timestamp:
- Aug 4, 2009 6:02:28 PM (16 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:
- 8dc0b746
- Parents:
- b341b16
- Location:
- sansmodels/src/sans/models/c_models
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_models/CLamellarPSHGModel.cpp
r27a0771 r96b59384 102 102 self->model->deltaH.dispersion->accept_as_source(visitor, self->model->deltaH.dispersion, disp_dict); 103 103 PyDict_SetItemString(self->dispersion, "deltaH", disp_dict); 104 disp_dict = PyDict_New(); 105 self->model->spacing.dispersion->accept_as_source(visitor, self->model->spacing.dispersion, disp_dict); 106 PyDict_SetItemString(self->dispersion, "spacing", disp_dict); 104 107 105 108 … … 171 174 disp_dict = PyDict_GetItemString(self->dispersion, "deltaH"); 172 175 self->model->deltaH.dispersion->accept_as_destination(visitor, self->model->deltaH.dispersion, disp_dict); 176 disp_dict = PyDict_GetItemString(self->dispersion, "spacing"); 177 self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict); 173 178 174 179 … … 239 244 disp_dict = PyDict_GetItemString(self->dispersion, "deltaH"); 240 245 self->model->deltaH.dispersion->accept_as_destination(visitor, self->model->deltaH.dispersion, disp_dict); 246 disp_dict = PyDict_GetItemString(self->dispersion, "spacing"); 247 self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict); 241 248 242 249 … … 298 305 } else if (!strcmp(par_name, "deltaH")) { 299 306 self->model->deltaH.dispersion = dispersion; 307 } else if (!strcmp(par_name, "spacing")) { 308 self->model->spacing.dispersion = dispersion; 300 309 } else { 301 310 PyErr_SetString(CLamellarPSHGModelError, -
sansmodels/src/sans/models/c_models/lamellarPS_HG.cpp
r27a0771 r96b59384 35 35 LamellarPSHGModel :: LamellarPSHGModel() { 36 36 scale = Parameter(1.0); 37 spacing = Parameter(40.0); 37 spacing = Parameter(40.0, true); 38 spacing.set_min(0.0); 38 39 deltaT = Parameter(10.0, true); 39 40 deltaT.set_min(0.0); … … 69 70 dp[7] = n_plates(); 70 71 dp[8] = caille(); 71 dp[9] = background();72 72 dp[9] = 0.0; 73 73 74 74 75 // Get the dispersion points for (deltaT) thickness of the tail 75 76 vector<WeightPoint> weights_deltaT; 76 77 deltaT.get_weights(weights_deltaT); 77 78 78 79 // Get the dispersion points for (deltaH) thickness of the head 79 80 vector<WeightPoint> weights_deltaH; 80 81 deltaH.get_weights(weights_deltaH); 81 82 83 // Get the dispersion points for spacing 84 vector<WeightPoint> weights_spacing; 85 spacing.get_weights(weights_spacing); 86 82 87 // Perform the computation, with all weight points 83 88 double sum = 0.0; 84 89 double norm = 0.0; 85 90 86 91 // Loop over deltaT weight points 87 92 for(int i=0; i< (int)weights_deltaT.size(); i++) { … … 91 96 for(int j=0; j< (int)weights_deltaH.size(); j++) { 92 97 dp[3] = weights_deltaH[j].value; 98 // Loop over spacing weight points 99 for(int k=0; k< (int)weights_spacing.size(); k++) { 100 dp[1] = weights_spacing[k].value; 93 101 94 sum += weights_deltaT[i].weight * weights_deltaH[j].weight *LamellarPS_HG(dp, q); 95 norm += weights_deltaT[i].weight * weights_deltaH[j].weight; 102 sum += weights_deltaT[i].weight * weights_deltaH[j].weight *weights_spacing[k].weight 103 *LamellarPS_HG(dp, q); 104 norm += weights_deltaT[i].weight * weights_deltaH[j].weight * weights_spacing[k].weight; 105 } 96 106 } 97 98 107 } 99 108 return sum/norm + background(); … … 105 114 * @return: function value 106 115 */ 116 double LamellarPSHGModel :: operator()(double qx, double qy) { 117 double q = sqrt(qx*qx + qy*qy); 118 return (*this).operator()(q); 119 } 120 121 /** 122 * Function to evaluate 2D scattering function 123 * @param pars: parameters of the lamellarPS_HG 124 * @param q: q-value 125 * @param phi: angle phi 126 * @return: function value 127 */ 128 double LamellarPSHGModel :: evaluate_rphi(double q, double phi) { 129 return (*this).operator()(q); 130 } 131 132 /* 107 133 double LamellarPSHGModel :: operator()(double qx, double qy) { 108 134 LamellarPSHGParameters dp; … … 118 144 dp.caille = caille(); 119 145 dp.background = background(); 120 146 121 147 // Get the dispersion points for the deltaT 122 148 vector<WeightPoint> weights_deltaT; … … 134 160 for(int i=0; i< (int)weights_deltaT.size(); i++) { 135 161 dp.deltaT = weights_deltaT[i].value; 136 162 137 163 // Loop over deltaH weight points 138 164 for(int j=0; j< (int)weights_deltaH.size(); j++) { 139 165 dp.deltaH = weights_deltaH[j].value; 140 166 141 sum += weights_deltaT[i].weight *weights_deltaH[j].weight *lamellarPS_HG_analytical_2DXY(&dp, qx, qy); 142 norm += weights_deltaT[i].weight * weights_deltaH[j].weight; 167 sum += weights_deltaT[i].weight *weights_deltaH[j].weight *lamellarPS_HG_analytical_2DXY(&dp, qx, qy); 168 norm += weights_deltaT[i].weight * weights_deltaH[j].weight; 143 169 } 144 170 } 145 171 return sum/norm + background(); 146 172 } 173 */ 147 174 148 175 149 /**150 * Function to evaluate 2D scattering function151 * @param pars: parameters of the lamellar152 * @param q: q-value153 * @param phi: angle phi154 * @return: function value155 */156 double LamellarPSHGModel :: evaluate_rphi(double q, double phi) {157 double qx = q*cos(phi);158 double qy = q*sin(phi);159 return (*this).operator()(qx, qy);160 } -
sansmodels/src/sans/models/c_models/oblate.cpp
r27a0771 r96b59384 45 45 sld_solvent = Parameter(6.3e-6); 46 46 background = Parameter(0.0); 47 axis_theta = Parameter(0.0, true);48 axis_phi = Parameter(0.0, true);49 47 } 50 48 … … 67 65 dp[5] = contrast(); 68 66 dp[6] = sld_solvent(); 69 dp[7] = background();70 67 dp[7] = 0.0; 68 71 69 // Get the dispersion points for the major core 72 70 vector<WeightPoint> weights_major_core; … … 106 104 dp[4] = weights_minor_shell[l].value; 107 105 108 sum += weights_major_core[i].weight* weights_minor_core[j].weight * weights_major_shell[k].weight 106 sum += weights_major_core[i].weight* weights_minor_core[j].weight * weights_major_shell[k].weight 109 107 * weights_minor_shell[l].weight * OblateForm(dp, q); 110 norm += weights_major_core[i].weight* weights_minor_core[j].weight * weights_major_shell[k].weight 108 norm += weights_major_core[i].weight* weights_minor_core[j].weight * weights_major_shell[k].weight 111 109 * weights_minor_shell[l].weight; 112 110 } … … 123 121 * @return: function value 124 122 */ 123 125 124 double OblateModel :: operator()(double qx, double qy) { 125 double q = sqrt(qx*qx + qy*qy); 126 127 return (*this).operator()(q); 128 } 129 130 131 /** 132 * Function to evaluate 2D scattering function 133 * @param pars: parameters of the oblate 134 * @param q: q-value 135 * @param phi: angle phi 136 * @return: function value 137 */ 138 double OblateModel :: evaluate_rphi(double q, double phi) { 139 return (*this).operator()(q); 140 } 141 142 /* disable below for now 143 double OblateShellModel :: operator()(double qx, double qy) { 126 144 OblateParameters dp; 127 145 // Fill parameter array … … 215 233 return sum/norm + background(); 216 234 } 217 218 /** 219 * Function to evaluate 2D scattering function 220 * @param pars: parameters of the oblate 221 * @param q: q-value 222 * @param phi: angle phi 223 * @return: function value 224 */ 225 double OblateModel :: evaluate_rphi(double q, double phi) { 226 double qx = q*cos(phi); 227 double qy = q*sin(phi); 228 return (*this).operator()(qx, qy); 229 } 235 *///
Note: See TracChangeset
for help on using the changeset viewer.