Ignore:
Timestamp:
Aug 31, 2009 5:25:44 PM (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:
5be36bb
Parents:
572beba
Message:

calculation of the effective radius are added

File:
1 edited

Legend:

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

    r870f131 r5eb9154  
    1818 * 
    1919 * WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY 
    20  *          DO NOT MODIFY THIS FILE, MODIFY SquareWell.h 
     20 *          DO NOT MODIFY THIS FILE, MODIFY squarewell.h 
    2121 *          AND RE-RUN THE GENERATOR SCRIPT 
    2222 * 
     
    3333#include <math.h> 
    3434#include <time.h> 
    35 #include "SquareWell.h" 
     35#include "squarewell.h" 
    3636} 
    3737 
     
    8686         
    8787        // Initialize parameter dictionary 
    88         PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",50.000000)); 
    8988        PyDict_SetItemString(self->params,"welldepth",Py_BuildValue("d",1.500000)); 
     89        PyDict_SetItemString(self->params,"effect_radius",Py_BuildValue("d",50.000000)); 
    9090        PyDict_SetItemString(self->params,"volfraction",Py_BuildValue("d",0.040000)); 
    9191        PyDict_SetItemString(self->params,"wellwidth",Py_BuildValue("d",1.200000)); 
     
    9494        PyObject * disp_dict; 
    9595        disp_dict = PyDict_New(); 
    96         self->model->radius.dispersion->accept_as_source(visitor, self->model->radius.dispersion, disp_dict); 
    97         PyDict_SetItemString(self->dispersion, "radius", disp_dict); 
     96        self->model->effect_radius.dispersion->accept_as_source(visitor, self->model->effect_radius.dispersion, disp_dict); 
     97        PyDict_SetItemString(self->dispersion, "effect_radius", disp_dict); 
    9898 
    9999 
     
    227227         
    228228            // Reader parameter dictionary 
    229     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") ); 
    230229    self->model->welldepth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "welldepth") ); 
     230    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
    231231    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
    232232    self->model->wellwidth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "wellwidth") ); 
     
    234234    PyObject* disp_dict; 
    235235    DispersionVisitor* visitor = new DispersionVisitor(); 
    236     disp_dict = PyDict_GetItemString(self->dispersion, "radius"); 
    237     self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict); 
     236    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     237    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
    238238 
    239239         
     
    298298         
    299299            // Reader parameter dictionary 
    300     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") ); 
    301300    self->model->welldepth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "welldepth") ); 
     301    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
    302302    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
    303303    self->model->wellwidth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "wellwidth") ); 
     
    305305    PyObject* disp_dict; 
    306306    DispersionVisitor* visitor = new DispersionVisitor(); 
    307     disp_dict = PyDict_GetItemString(self->dispersion, "radius"); 
    308     self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict); 
     307    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     308    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
    309309 
    310310         
     
    344344        }        
    345345} 
    346  
    347 /** 
    348  * Function to call to evaluate model in cartesian coordinates 
    349  * @param args: input q or [qx, qy]] 
    350  * @return: function value 
    351  */ 
    352 static PyObject * runXY(CSquareWellStructure *self, PyObject *args) { 
    353         double qx_value, qy_value; 
     346/** 
     347 * Function to call to calculate_ER 
     348 * @return: effective radius value  
     349 */ 
     350static PyObject * calculate_ER(CSquareWellStructure *self) { 
     351 
    354352        PyObject* pars; 
    355353        int npars; 
     
    358356         
    359357            // Reader parameter dictionary 
    360     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") ); 
    361358    self->model->welldepth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "welldepth") ); 
     359    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
    362360    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
    363361    self->model->wellwidth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "wellwidth") ); 
     
    365363    PyObject* disp_dict; 
    366364    DispersionVisitor* visitor = new DispersionVisitor(); 
    367     disp_dict = PyDict_GetItemString(self->dispersion, "radius"); 
    368     self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict); 
     365    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     366    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
     367 
     368                 
     369        return Py_BuildValue("d",(*(self->model)).calculate_ER()); 
     370 
     371} 
     372/** 
     373 * Function to call to evaluate model in cartesian coordinates 
     374 * @param args: input q or [qx, qy]] 
     375 * @return: function value 
     376 */ 
     377static PyObject * runXY(CSquareWellStructure *self, PyObject *args) { 
     378        double qx_value, qy_value; 
     379        PyObject* pars; 
     380        int npars; 
     381         
     382        // Get parameters 
     383         
     384            // Reader parameter dictionary 
     385    self->model->welldepth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "welldepth") ); 
     386    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
     387    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
     388    self->model->wellwidth = PyFloat_AsDouble( PyDict_GetItemString(self->params, "wellwidth") ); 
     389    // Read in dispersion parameters 
     390    PyObject* disp_dict; 
     391    DispersionVisitor* visitor = new DispersionVisitor(); 
     392    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     393    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
    369394 
    370395         
     
    422447        // Ugliness necessary to go from python to C 
    423448            // TODO: refactor this 
    424     if (!strcmp(par_name, "radius")) { 
    425         self->model->radius.dispersion = dispersion; 
     449    if (!strcmp(par_name, "effect_radius")) { 
     450        self->model->effect_radius.dispersion = dispersion; 
    426451    } else { 
    427452            PyErr_SetString(CSquareWellStructureError, 
     
    443468    {"runXY",      (PyCFunction)runXY     , METH_VARARGS, 
    444469      "Evaluate the model at a given Q or Qx, Qy"}, 
     470    {"calculate_ER",      (PyCFunction)calculate_ER     , METH_VARARGS, 
     471      "Evaluate the model at a given Q or Q, phi"}, 
    445472       
    446473    {"evalDistribution",  (PyCFunction)evalDistribution , METH_VARARGS, 
Note: See TracChangeset for help on using the changeset viewer.