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/CHardsphereStructure.cpp

    r870f131 r5eb9154  
    1818 * 
    1919 * WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY 
    20  *          DO NOT MODIFY THIS FILE, MODIFY Hardsphere.h 
     20 *          DO NOT MODIFY THIS FILE, MODIFY hardsphere.h 
    2121 *          AND RE-RUN THE GENERATOR SCRIPT 
    2222 * 
     
    3333#include <math.h> 
    3434#include <time.h> 
    35 #include "Hardsphere.h" 
     35#include "hardsphere.h" 
    3636} 
    3737 
     
    8686         
    8787        // Initialize parameter dictionary 
    88         PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",50.000000)); 
     88        PyDict_SetItemString(self->params,"effect_radius",Py_BuildValue("d",50.000000)); 
    8989        PyDict_SetItemString(self->params,"volfraction",Py_BuildValue("d",0.200000)); 
    9090        // Initialize dispersion / averaging parameter dict 
     
    9292        PyObject * disp_dict; 
    9393        disp_dict = PyDict_New(); 
    94         self->model->radius.dispersion->accept_as_source(visitor, self->model->radius.dispersion, disp_dict); 
    95         PyDict_SetItemString(self->dispersion, "radius", disp_dict); 
     94        self->model->effect_radius.dispersion->accept_as_source(visitor, self->model->effect_radius.dispersion, disp_dict); 
     95        PyDict_SetItemString(self->dispersion, "effect_radius", disp_dict); 
    9696 
    9797 
     
    225225         
    226226            // Reader parameter dictionary 
    227     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") ); 
     227    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
    228228    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
    229229    // Read in dispersion parameters 
    230230    PyObject* disp_dict; 
    231231    DispersionVisitor* visitor = new DispersionVisitor(); 
    232     disp_dict = PyDict_GetItemString(self->dispersion, "radius"); 
    233     self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict); 
     232    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     233    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
    234234 
    235235         
     
    294294         
    295295            // Reader parameter dictionary 
    296     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") ); 
     296    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
    297297    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
    298298    // Read in dispersion parameters 
    299299    PyObject* disp_dict; 
    300300    DispersionVisitor* visitor = new DispersionVisitor(); 
    301     disp_dict = PyDict_GetItemString(self->dispersion, "radius"); 
    302     self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict); 
     301    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     302    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
    303303 
    304304         
     
    338338        }        
    339339} 
    340  
     340/** 
     341 * Function to call to calculate_ER 
     342 * @return: effective radius value  
     343 */ 
     344static PyObject * calculate_ER(CHardsphereStructure *self) { 
     345 
     346        PyObject* pars; 
     347        int npars; 
     348         
     349        // Get parameters 
     350         
     351            // Reader parameter dictionary 
     352    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
     353    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
     354    // Read in dispersion parameters 
     355    PyObject* disp_dict; 
     356    DispersionVisitor* visitor = new DispersionVisitor(); 
     357    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     358    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
     359 
     360                 
     361        return Py_BuildValue("d",(*(self->model)).calculate_ER()); 
     362 
     363} 
    341364/** 
    342365 * Function to call to evaluate model in cartesian coordinates 
     
    352375         
    353376            // Reader parameter dictionary 
    354     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") ); 
     377    self->model->effect_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "effect_radius") ); 
    355378    self->model->volfraction = PyFloat_AsDouble( PyDict_GetItemString(self->params, "volfraction") ); 
    356379    // Read in dispersion parameters 
    357380    PyObject* disp_dict; 
    358381    DispersionVisitor* visitor = new DispersionVisitor(); 
    359     disp_dict = PyDict_GetItemString(self->dispersion, "radius"); 
    360     self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict); 
     382    disp_dict = PyDict_GetItemString(self->dispersion, "effect_radius"); 
     383    self->model->effect_radius.dispersion->accept_as_destination(visitor, self->model->effect_radius.dispersion, disp_dict); 
    361384 
    362385         
     
    414437        // Ugliness necessary to go from python to C 
    415438            // TODO: refactor this 
    416     if (!strcmp(par_name, "radius")) { 
    417         self->model->radius.dispersion = dispersion; 
     439    if (!strcmp(par_name, "effect_radius")) { 
     440        self->model->effect_radius.dispersion = dispersion; 
    418441    } else { 
    419442            PyErr_SetString(CHardsphereStructureError, 
     
    435458    {"runXY",      (PyCFunction)runXY     , METH_VARARGS, 
    436459      "Evaluate the model at a given Q or Qx, Qy"}, 
     460    {"calculate_ER",      (PyCFunction)calculate_ER     , METH_VARARGS, 
     461      "Evaluate the model at a given Q or Q, phi"}, 
    437462       
    438463    {"evalDistribution",  (PyCFunction)evalDistribution , METH_VARARGS, 
Note: See TracChangeset for help on using the changeset viewer.