Ignore:
Timestamp:
Aug 21, 2009 10:34:33 AM (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:
14c3887
Parents:
bda194e3
Message:

some corrections and removed polydispersity from inside of function and set dQ =0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp

    r9bd69098 rc1c29b6  
    9292        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000)); 
    9393        PyDict_SetItemString(self->params,"delta",Py_BuildValue("d",30.000000)); 
    94         PyDict_SetItemString(self->params,"sigma",Py_BuildValue("d",0.150000)); 
    9594        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000005)); 
    9695        // Initialize dispersion / averaging parameter dict 
    9796        DispersionVisitor* visitor = new DispersionVisitor(); 
    9897        PyObject * disp_dict; 
     98        disp_dict = PyDict_New(); 
     99        self->model->delta.dispersion->accept_as_source(visitor, self->model->delta.dispersion, disp_dict); 
     100        PyDict_SetItemString(self->dispersion, "delta", disp_dict); 
    99101        disp_dict = PyDict_New(); 
    100102        self->model->spacing.dispersion->accept_as_source(visitor, self->model->spacing.dispersion, disp_dict); 
     
    167169    return PyArray_Return(result);  
    168170 } 
    169 /** 
    170  * Function to call to evaluate model 
    171  * @param args: input numpy array  [q[],phi[]] 
    172  * @return: numpy array object  
    173  */ 
    174 static PyObject * evaluateTwoDim( LamellarPSModel* model,  
    175                               PyArrayObject *q, PyArrayObject *phi) 
    176  { 
    177     PyArrayObject *result; 
    178     //check validity of input vectors 
    179     if (q->nd != 1 || q->descr->type_num != PyArray_DOUBLE 
    180         || phi->nd != 1 || phi->descr->type_num != PyArray_DOUBLE 
    181         || phi->dimensions[0] != q->dimensions[0]){ 
    182       
    183         //const char * message= "Invalid array: q->nd=%d,type_num=%d\n",q->nd,q->descr->type_num; 
    184         PyErr_SetString(PyExc_ValueError ,"wrong input");  
    185         return NULL; 
    186     } 
    187         result= (PyArrayObject *)PyArray_FromDims(q->nd,(int*)(q->dimensions), PyArray_DOUBLE); 
    188  
    189         if (result == NULL){ 
    190             const char * message= "Could not create result "; 
    191         PyErr_SetString(PyExc_RuntimeError , message); 
    192             return NULL; 
    193         } 
    194          
    195     for (int i = 0; i < q->dimensions[0]; i++) { 
    196       double q_value = *(double *)(q->data + i*q->strides[0]); 
    197       double phi_value = *(double *)(phi->data + i*phi->strides[0]); 
    198       double *result_value = (double *)(result->data + i*result->strides[0]); 
    199       if (q_value == 0) 
    200           *result_value = 0.0; 
    201       else 
    202           *result_value = model->evaluate_rphi(q_value, phi_value); 
    203     } 
    204     return PyArray_Return(result);  
    205  } 
     171 
    206172 /** 
    207173 * Function to call to evaluate model 
     
    272238    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") ); 
    273239    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") ); 
    274     self->model->sigma = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sigma") ); 
    275240    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") ); 
    276241    // Read in dispersion parameters 
    277242    PyObject* disp_dict; 
    278243    DispersionVisitor* visitor = new DispersionVisitor(); 
     244    disp_dict = PyDict_GetItemString(self->dispersion, "delta"); 
     245    self->model->delta.dispersion->accept_as_destination(visitor, self->model->delta.dispersion, disp_dict); 
    279246    disp_dict = PyDict_GetItemString(self->dispersion, "spacing"); 
    280247    self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict); 
     
    347314    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") ); 
    348315    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") ); 
    349     self->model->sigma = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sigma") ); 
    350316    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") ); 
    351317    // Read in dispersion parameters 
    352318    PyObject* disp_dict; 
    353319    DispersionVisitor* visitor = new DispersionVisitor(); 
     320    disp_dict = PyDict_GetItemString(self->dispersion, "delta"); 
     321    self->model->delta.dispersion->accept_as_destination(visitor, self->model->delta.dispersion, disp_dict); 
    354322    disp_dict = PyDict_GetItemString(self->dispersion, "spacing"); 
    355323    self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict); 
     
    411379    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") ); 
    412380    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") ); 
    413     self->model->sigma = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sigma") ); 
    414381    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") ); 
    415382    // Read in dispersion parameters 
    416383    PyObject* disp_dict; 
    417384    DispersionVisitor* visitor = new DispersionVisitor(); 
     385    disp_dict = PyDict_GetItemString(self->dispersion, "delta"); 
     386    self->model->delta.dispersion->accept_as_destination(visitor, self->model->delta.dispersion, disp_dict); 
    418387    disp_dict = PyDict_GetItemString(self->dispersion, "spacing"); 
    419388    self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict); 
     
    473442        // Ugliness necessary to go from python to C 
    474443            // TODO: refactor this 
    475     if (!strcmp(par_name, "spacing")) { 
     444    if (!strcmp(par_name, "delta")) { 
     445        self->model->delta.dispersion = dispersion; 
     446    } else    if (!strcmp(par_name, "spacing")) { 
    476447        self->model->spacing.dispersion = dispersion; 
    477448    } else { 
Note: See TracChangeset for help on using the changeset viewer.