Changeset 8e36cdd in sasview for sansmodels/src/sans/models/c_models
- Timestamp:
- Aug 20, 2009 1:24:23 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:
- 1d67243
- Parents:
- 191b369
- Location:
- sansmodels/src/sans/models/c_models
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_models/CParallelepipedModel.cpp
r2cb89e7 r8e36cdd 87 87 // Initialize parameter dictionary 88 88 PyDict_SetItemString(self->params,"short_a",Py_BuildValue("d",35.000000)); 89 PyDict_SetItemString(self->params,"short_b",Py_BuildValue("d",75.000000)); 89 90 PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000)); 90 PyDict_SetItemString(self->params,"long_b",Py_BuildValue("d",75.000000)); 91 PyDict_SetItemString(self->params,"longer_c",Py_BuildValue("d",400.000000)); 91 PyDict_SetItemString(self->params,"long_c",Py_BuildValue("d",400.000000)); 92 92 PyDict_SetItemString(self->params,"parallel_psi",Py_BuildValue("d",0.000000)); 93 93 PyDict_SetItemString(self->params,"parallel_phi",Py_BuildValue("d",0.000000)); … … 102 102 PyDict_SetItemString(self->dispersion, "short_a", disp_dict); 103 103 disp_dict = PyDict_New(); 104 self->model-> long_b.dispersion->accept_as_source(visitor, self->model->long_b.dispersion, disp_dict);105 PyDict_SetItemString(self->dispersion, " long_b", disp_dict);104 self->model->short_b.dispersion->accept_as_source(visitor, self->model->short_b.dispersion, disp_dict); 105 PyDict_SetItemString(self->dispersion, "short_b", disp_dict); 106 106 disp_dict = PyDict_New(); 107 self->model->long er_c.dispersion->accept_as_source(visitor, self->model->longer_c.dispersion, disp_dict);108 PyDict_SetItemString(self->dispersion, "long er_c", disp_dict);107 self->model->long_c.dispersion->accept_as_source(visitor, self->model->long_c.dispersion, disp_dict); 108 PyDict_SetItemString(self->dispersion, "long_c", disp_dict); 109 109 disp_dict = PyDict_New(); 110 110 self->model->parallel_phi.dispersion->accept_as_source(visitor, self->model->parallel_phi.dispersion, disp_dict); … … 247 247 // Reader parameter dictionary 248 248 self->model->short_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "short_a") ); 249 self->model->short_b = PyFloat_AsDouble( PyDict_GetItemString(self->params, "short_b") ); 249 250 self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") ); 250 self->model->long_b = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_b") ); 251 self->model->longer_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "longer_c") ); 251 self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") ); 252 252 self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") ); 253 253 self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") ); … … 260 260 disp_dict = PyDict_GetItemString(self->dispersion, "short_a"); 261 261 self->model->short_a.dispersion->accept_as_destination(visitor, self->model->short_a.dispersion, disp_dict); 262 disp_dict = PyDict_GetItemString(self->dispersion, " long_b");263 self->model-> long_b.dispersion->accept_as_destination(visitor, self->model->long_b.dispersion, disp_dict);264 disp_dict = PyDict_GetItemString(self->dispersion, "long er_c");265 self->model->long er_c.dispersion->accept_as_destination(visitor, self->model->longer_c.dispersion, disp_dict);262 disp_dict = PyDict_GetItemString(self->dispersion, "short_b"); 263 self->model->short_b.dispersion->accept_as_destination(visitor, self->model->short_b.dispersion, disp_dict); 264 disp_dict = PyDict_GetItemString(self->dispersion, "long_c"); 265 self->model->long_c.dispersion->accept_as_destination(visitor, self->model->long_c.dispersion, disp_dict); 266 266 disp_dict = PyDict_GetItemString(self->dispersion, "parallel_phi"); 267 267 self->model->parallel_phi.dispersion->accept_as_destination(visitor, self->model->parallel_phi.dispersion, disp_dict); … … 333 333 // Reader parameter dictionary 334 334 self->model->short_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "short_a") ); 335 self->model->short_b = PyFloat_AsDouble( PyDict_GetItemString(self->params, "short_b") ); 335 336 self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") ); 336 self->model->long_b = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_b") ); 337 self->model->longer_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "longer_c") ); 337 self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") ); 338 338 self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") ); 339 339 self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") ); … … 346 346 disp_dict = PyDict_GetItemString(self->dispersion, "short_a"); 347 347 self->model->short_a.dispersion->accept_as_destination(visitor, self->model->short_a.dispersion, disp_dict); 348 disp_dict = PyDict_GetItemString(self->dispersion, " long_b");349 self->model-> long_b.dispersion->accept_as_destination(visitor, self->model->long_b.dispersion, disp_dict);350 disp_dict = PyDict_GetItemString(self->dispersion, "long er_c");351 self->model->long er_c.dispersion->accept_as_destination(visitor, self->model->longer_c.dispersion, disp_dict);348 disp_dict = PyDict_GetItemString(self->dispersion, "short_b"); 349 self->model->short_b.dispersion->accept_as_destination(visitor, self->model->short_b.dispersion, disp_dict); 350 disp_dict = PyDict_GetItemString(self->dispersion, "long_c"); 351 self->model->long_c.dispersion->accept_as_destination(visitor, self->model->long_c.dispersion, disp_dict); 352 352 disp_dict = PyDict_GetItemString(self->dispersion, "parallel_phi"); 353 353 self->model->parallel_phi.dispersion->accept_as_destination(visitor, self->model->parallel_phi.dispersion, disp_dict); … … 408 408 // Reader parameter dictionary 409 409 self->model->short_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "short_a") ); 410 self->model->short_b = PyFloat_AsDouble( PyDict_GetItemString(self->params, "short_b") ); 410 411 self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") ); 411 self->model->long_b = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_b") ); 412 self->model->longer_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "longer_c") ); 412 self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") ); 413 413 self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") ); 414 414 self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") ); … … 421 421 disp_dict = PyDict_GetItemString(self->dispersion, "short_a"); 422 422 self->model->short_a.dispersion->accept_as_destination(visitor, self->model->short_a.dispersion, disp_dict); 423 disp_dict = PyDict_GetItemString(self->dispersion, " long_b");424 self->model-> long_b.dispersion->accept_as_destination(visitor, self->model->long_b.dispersion, disp_dict);425 disp_dict = PyDict_GetItemString(self->dispersion, "long er_c");426 self->model->long er_c.dispersion->accept_as_destination(visitor, self->model->longer_c.dispersion, disp_dict);423 disp_dict = PyDict_GetItemString(self->dispersion, "short_b"); 424 self->model->short_b.dispersion->accept_as_destination(visitor, self->model->short_b.dispersion, disp_dict); 425 disp_dict = PyDict_GetItemString(self->dispersion, "long_c"); 426 self->model->long_c.dispersion->accept_as_destination(visitor, self->model->long_c.dispersion, disp_dict); 427 427 disp_dict = PyDict_GetItemString(self->dispersion, "parallel_phi"); 428 428 self->model->parallel_phi.dispersion->accept_as_destination(visitor, self->model->parallel_phi.dispersion, disp_dict); … … 488 488 if (!strcmp(par_name, "short_a")) { 489 489 self->model->short_a.dispersion = dispersion; 490 } else if (!strcmp(par_name, " long_b")) {491 self->model-> long_b.dispersion = dispersion;492 } else if (!strcmp(par_name, "long er_c")) {493 self->model->long er_c.dispersion = dispersion;490 } else if (!strcmp(par_name, "short_b")) { 491 self->model->short_b.dispersion = dispersion; 492 } else if (!strcmp(par_name, "long_c")) { 493 self->model->long_c.dispersion = dispersion; 494 494 } else if (!strcmp(par_name, "parallel_phi")) { 495 495 self->model->parallel_phi.dispersion = dispersion; -
sansmodels/src/sans/models/c_models/models.hh
reddff027 r8e36cdd 50 50 Parameter scale; 51 51 Parameter short_a; 52 Parameter long_b;53 Parameter long er_c;52 Parameter short_b; 53 Parameter long_c; 54 54 Parameter contrast; 55 55 Parameter background; -
sansmodels/src/sans/models/c_models/parallelepiped.cpp
r3c102d4 r8e36cdd 37 37 short_a = Parameter(35.0, true); 38 38 short_a.set_max(1.0); 39 long_b = Parameter(75.0, true);40 long_b.set_min(1.0);41 long er_c = Parameter(400.0, true);42 long er_c.set_min(1.0);39 short_b = Parameter(75.0, true); 40 short_b.set_min(1.0); 41 long_c = Parameter(400.0, true); 42 long_c.set_min(1.0); 43 43 contrast = Parameter(53.e-7); 44 44 background = Parameter(0.0); … … 61 61 dp[0] = scale(); 62 62 dp[1] = short_a(); 63 dp[2] = long_b();64 dp[3] = long er_c();63 dp[2] = short_b(); 64 dp[3] = long_c(); 65 65 dp[4] = contrast(); 66 66 dp[5] = 0.0; … … 71 71 72 72 // Get the dispersion points for the longer_edgeB 73 vector<WeightPoint> weights_ long_b;74 long_b.get_weights(weights_long_b);73 vector<WeightPoint> weights_short_b; 74 short_b.get_weights(weights_short_b); 75 75 76 76 // Get the dispersion points for the longuest_edgeC 77 vector<WeightPoint> weights_long er_c;78 long er_c.get_weights(weights_longer_c);77 vector<WeightPoint> weights_long_c; 78 long_c.get_weights(weights_long_c); 79 79 80 80 … … 89 89 90 90 // Loop over longer_edgeB weight points 91 for(int j=0; j< (int)weights_ long_b.size(); j++) {92 dp[2] = weights_ long_b[j].value;91 for(int j=0; j< (int)weights_short_b.size(); j++) { 92 dp[2] = weights_short_b[j].value; 93 93 94 94 // Loop over longuest_edgeC weight points 95 for(int k=0; k< (int)weights_long er_c.size(); k++) {96 dp[3] = weights_long er_c[k].value;97 98 sum += weights_short_a[i].weight * weights_ long_b[j].weight99 * weights_long er_c[k].weight * Parallelepiped(dp, q);95 for(int k=0; k< (int)weights_long_c.size(); k++) { 96 dp[3] = weights_long_c[k].value; 97 98 sum += weights_short_a[i].weight * weights_short_b[j].weight 99 * weights_long_c[k].weight * Parallelepiped(dp, q); 100 100 101 101 norm += weights_short_a[i].weight 102 * weights_ long_b[j].weight * weights_longer_c[k].weight;102 * weights_short_b[j].weight * weights_long_c[k].weight; 103 103 } 104 104 } … … 117 117 dp.scale = scale(); 118 118 dp.short_a = short_a(); 119 dp. long_b = long_b();120 dp.long er_c = longer_c();119 dp.short_b = short_b(); 120 dp.long_c = long_c(); 121 121 dp.contrast = contrast(); 122 122 dp.background = 0.0; … … 132 132 133 133 // Get the dispersion points for the longer_edgeB 134 vector<WeightPoint> weights_ long_b;135 long_b.get_weights(weights_long_b);134 vector<WeightPoint> weights_short_b; 135 short_b.get_weights(weights_short_b); 136 136 137 137 // Get angular averaging for the longuest_edgeC 138 vector<WeightPoint> weights_long er_c;139 long er_c.get_weights(weights_longer_c);138 vector<WeightPoint> weights_long_c; 139 long_c.get_weights(weights_long_c); 140 140 141 141 // Get angular averaging for theta … … 160 160 161 161 // Loop over longer_edgeB weight points 162 for(int j=0; j< (int)weights_ long_b.size(); j++) {163 dp. long_b = weights_long_b[j].value;162 for(int j=0; j< (int)weights_short_b.size(); j++) { 163 dp.short_b = weights_short_b[j].value; 164 164 165 165 // Average over longuest_edgeC distribution 166 for(int k=0; k< (int)weights_long er_c.size(); k++) {167 dp.long er_c = weights_longer_c[k].value;166 for(int k=0; k< (int)weights_long_c.size(); k++) { 167 dp.long_c = weights_long_c[k].value; 168 168 169 169 // Average over theta distribution … … 180 180 181 181 double _ptvalue = weights_short_a[i].weight 182 * weights_ long_b[j].weight183 * weights_long er_c[k].weight182 * weights_short_b[j].weight 183 * weights_long_c[k].weight 184 184 * weights_parallel_theta[l].weight 185 185 * weights_parallel_phi[m].weight … … 192 192 193 193 norm += weights_short_a[i].weight 194 * weights_ long_b[j].weight195 * weights_long er_c[k].weight194 * weights_short_b[j].weight 195 * weights_long_c[k].weight 196 196 * weights_parallel_theta[l].weight 197 197 * weights_parallel_phi[m].weight
Note: See TracChangeset
for help on using the changeset viewer.