Changeset a8d6888 in sasview for sansmodels/src/sans/models/c_models/CMultiShellModel.cpp
- Timestamp:
- Aug 24, 2009 10:08:37 AM (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:
- df4702f
- Parents:
- 2339ff1e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_models/CMultiShellModel.cpp
r9bd69098 ra8d6888 173 173 return PyArray_Return(result); 174 174 } 175 /** 176 * Function to call to evaluate model 177 * @param args: input numpy array [q[],phi[]] 178 * @return: numpy array object 179 */ 180 static PyObject * evaluateTwoDim( MultiShellModel* model, 181 PyArrayObject *q, PyArrayObject *phi) 182 { 183 PyArrayObject *result; 184 //check validity of input vectors 185 if (q->nd != 1 || q->descr->type_num != PyArray_DOUBLE 186 || phi->nd != 1 || phi->descr->type_num != PyArray_DOUBLE 187 || phi->dimensions[0] != q->dimensions[0]){ 188 189 //const char * message= "Invalid array: q->nd=%d,type_num=%d\n",q->nd,q->descr->type_num; 190 PyErr_SetString(PyExc_ValueError ,"wrong input"); 191 return NULL; 192 } 193 result= (PyArrayObject *)PyArray_FromDims(q->nd,(int*)(q->dimensions), PyArray_DOUBLE); 194 195 if (result == NULL){ 196 const char * message= "Could not create result "; 197 PyErr_SetString(PyExc_RuntimeError , message); 198 return NULL; 199 } 200 201 for (int i = 0; i < q->dimensions[0]; i++) { 202 double q_value = *(double *)(q->data + i*q->strides[0]); 203 double phi_value = *(double *)(phi->data + i*phi->strides[0]); 204 double *result_value = (double *)(result->data + i*result->strides[0]); 205 if (q_value == 0) 206 *result_value = 0.0; 207 else 208 *result_value = model->evaluate_rphi(q_value, phi_value); 209 } 210 return PyArray_Return(result); 211 } 175 212 176 /** 213 177 * Function to call to evaluate model … … 230 194 231 195 if (PyArray_Check(x) && PyArray_Check(y)) { 232 x_len = dims[0]= x->dimensions[0]; 233 y_len = dims[1]= y->dimensions[1]; 196 197 x_len = dims[1]= x->dimensions[1]; 198 y_len = dims[0]= y->dimensions[0]; 234 199 235 200 // Make a new double matrix of same dims … … 244 209 for ( i=0; i< x_len; i++) { 245 210 for ( j=0; j< y_len; j++) { 246 double x_value = *(double *)(x->data + i*x->strides[ 0]);247 double y_value = *(double *)(y->data + j*y->strides[ 1]);211 double x_value = *(double *)(x->data + i*x->strides[1]); 212 double y_value = *(double *)(y->data + j*y->strides[0]); 248 213 double *result_value = (double *)(result->data + 249 i*result->strides[ 0] + j*result->strides[1]);214 i*result->strides[1] + j*result->strides[0]); 250 215 *result_value = (*model)(x_value, y_value); 251 216 }
Note: See TracChangeset
for help on using the changeset viewer.