Changeset c637521 in sasview for sansmodels/src/c_extensions


Ignore:
Timestamp:
Jan 5, 2012 10:10:53 AM (13 years ago)
Author:
Mathieu Doucet <doucetm@…>
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:
7ffa8196
Parents:
df88829
Message:

refactor onion model

Location:
sansmodels/src/c_extensions
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/c_extensions/onion.h

    r67424cd rc637521  
    11#if !defined(o_h) 
    22#define onion_h 
     3#include "parameters.hh" 
    34 
    45/** 
     
    3435 //[ORIENTATION_PARAMS]= <text> </text> 
    3536 
    36 typedef struct { 
    37         /// number of shells 
    38         //  [DEFAULT]=n_shells=1 
    39         int n_shells; 
    40     /// Scale factor 
    41     //  [DEFAULT]=scale= 1.0 
    42         double scale; 
    43     /// Radius of sphere [A] 
    44     //  [DEFAULT]=rad_core0=200.0 [A] 
    45         double rad_core0; 
    46         ///     sld_core [1/A^(2)] 
    47         //  [DEFAULT]=sld_core0= 1.0e-6 [1/A^(2)] 
    48         double sld_core0; 
    49         ///     sld_solv [1/A^(2)] 
    50         //  [DEFAULT]=sld_solv= 6.4e-6 [1/A^(2)] 
    51         double sld_solv; 
    52         /// Incoherent Background [1/cm] 
    53         //  [DEFAULT]=background=0 [1/cm] 
    54         double background; 
     37class OnionModel{ 
     38public: 
     39    // Model parameters 
     40    /// number of shells 
     41    //  [DEFAULT]=n_shells=1 
     42    Parameter n_shells; 
     43      /// Scale factor 
     44      //  [DEFAULT]=scale= 1.0 
     45    Parameter scale; 
     46      /// Radius of sphere [A] 
     47      //  [DEFAULT]=rad_core0=200.0 [A] 
     48    Parameter rad_core0; 
     49    /// sld_core [1/A^(2)] 
     50    //  [DEFAULT]=sld_core0= 1.0e-6 [1/A^(2)] 
     51    Parameter sld_core0; 
     52    /// sld_solv [1/A^(2)] 
     53    //  [DEFAULT]=sld_solv= 6.4e-6 [1/A^(2)] 
     54    Parameter sld_solv; 
     55    /// Incoherent Background [1/cm] 
     56    //  [DEFAULT]=background=0 [1/cm] 
     57    Parameter background; 
    5558 
    5659    //  [DEFAULT]=sld_out_shell1=2.0e-06 [1/A^(2)] 
    57     double sld_out_shell1; 
     60    Parameter sld_out_shell1; 
    5861    //  [DEFAULT]=sld_out_shell2=2.5e-06 [1/A^(2)] 
    59     double sld_out_shell2; 
     62    Parameter sld_out_shell2; 
    6063    //  [DEFAULT]=sld_out_shell3=3.0e-06 [1/A^(2)] 
    61     double sld_out_shell3; 
     64    Parameter sld_out_shell3; 
    6265    //  [DEFAULT]=sld_out_shell4=3.5e-06 [1/A^(2)] 
    63     double sld_out_shell4; 
     66    Parameter sld_out_shell4; 
    6467    //  [DEFAULT]=sld_out_shell5=4.0e-06 [1/A^(2)] 
    65     double sld_out_shell5; 
     68    Parameter sld_out_shell5; 
    6669    //  [DEFAULT]=sld_out_shell6=4.5e-06 [1/A^(2)] 
    67     double sld_out_shell6; 
     70    Parameter sld_out_shell6; 
    6871    //  [DEFAULT]=sld_out_shell7=5.0e-06 [1/A^(2)] 
    69     double sld_out_shell7; 
     72    Parameter sld_out_shell7; 
    7073    //  [DEFAULT]=sld_out_shell8=5.5e-06 [1/A^(2)] 
    71     double sld_out_shell8; 
     74    Parameter sld_out_shell8; 
    7275    //  [DEFAULT]=sld_out_shell9=6.0e-06 [1/A^(2)] 
    73     double sld_out_shell9; 
     76    Parameter sld_out_shell9; 
    7477    //  [DEFAULT]=sld_out_shell10=6.2e-06 [1/A^(2)] 
    75     double sld_out_shell10; 
     78    Parameter sld_out_shell10; 
    7679 
    7780    //  [DEFAULT]=sld_in_shell1=1.7e-06 [1/A^(2)] 
    78     double sld_in_shell1; 
     81    Parameter sld_in_shell1; 
    7982    //  [DEFAULT]=sld_in_shell2=2.2e-06 [1/A^(2)] 
    80     double sld_in_shell2; 
     83    Parameter sld_in_shell2; 
    8184    //  [DEFAULT]=sld_in_shell3=2.7e-06 [1/A^(2)] 
    82     double sld_in_shell3; 
     85    Parameter sld_in_shell3; 
    8386    //  [DEFAULT]=sld_in_shell4=3.2e-06 [1/A^(2)] 
    84     double sld_in_shell4; 
     87    Parameter sld_in_shell4; 
    8588    //  [DEFAULT]=sld_in_shell5=3.7e-06 [1/A^(2)] 
    86     double sld_in_shell5; 
     89    Parameter sld_in_shell5; 
    8790    //  [DEFAULT]=sld_in_shell6=4.2e-06 [1/A^(2)] 
    88     double sld_in_shell6; 
     91    Parameter sld_in_shell6; 
    8992    //  [DEFAULT]=sld_in_shell7=4.7e-06 [1/A^(2)] 
    90     double sld_in_shell7; 
     93    Parameter sld_in_shell7; 
    9194    //  [DEFAULT]=sld_in_shell8=5.2e-06 [1/A^(2)] 
    92     double sld_in_shell8; 
     95    Parameter sld_in_shell8; 
    9396    //  [DEFAULT]=sld_in_shell9=5.7e-06 [1/A^(2)] 
    94     double sld_in_shell9; 
     97    Parameter sld_in_shell9; 
    9598    //  [DEFAULT]=sld_in_shell10=6.0e-06 [1/A^(2)] 
    96     double sld_in_shell10; 
     99    Parameter sld_in_shell10; 
    97100 
    98101    //  [DEFAULT]=A_shell1=1.0 
    99     double A_shell1; 
     102    Parameter A_shell1; 
    100103    //  [DEFAULT]=A_shell2=1.0 
    101     double A_shell2; 
     104    Parameter A_shell2; 
    102105    //  [DEFAULT]=A_shell3=1.0 
    103     double A_shell3; 
     106    Parameter A_shell3; 
    104107    //  [DEFAULT]=A_shell4=1.0 
    105     double A_shell4; 
     108    Parameter A_shell4; 
    106109    //  [DEFAULT]=A_shell5=1.0 
    107     double A_shell5; 
     110    Parameter A_shell5; 
    108111    //  [DEFAULT]=A_shell6=1.0 
    109     double A_shell6; 
     112    Parameter A_shell6; 
    110113    //  [DEFAULT]=A_shell7=1.0 
    111     double A_shell7; 
     114    Parameter A_shell7; 
    112115    //  [DEFAULT]=A_shell8=1.0 
    113     double A_shell8; 
     116    Parameter A_shell8; 
    114117    //  [DEFAULT]=A_shell9=1.0 
    115     double A_shell9; 
     118    Parameter A_shell9; 
    116119    //  [DEFAULT]=A_shell10=1.0 
    117     double A_shell10; 
     120    Parameter A_shell10; 
    118121 
    119122    //  [DEFAULT]=thick_shell1=50.0 [A] 
    120     double thick_shell1; 
     123    Parameter thick_shell1; 
    121124    //  [DEFAULT]=thick_shell2=50.0 [A] 
    122     double thick_shell2; 
     125    Parameter thick_shell2; 
    123126    //  [DEFAULT]=thick_shell3=50.0 [A] 
    124     double thick_shell3; 
     127    Parameter thick_shell3; 
    125128    //  [DEFAULT]=thick_shell4=50.0 [A] 
    126     double thick_shell4; 
     129    Parameter thick_shell4; 
    127130    //  [DEFAULT]=thick_shell5=50.0 [A] 
    128     double thick_shell5; 
     131    Parameter thick_shell5; 
    129132    //  [DEFAULT]=thick_shell6=50.0 [A] 
    130     double thick_shell6; 
     133    Parameter thick_shell6; 
    131134    //  [DEFAULT]=thick_shell7=50.0 [A] 
    132     double thick_shell7; 
     135    Parameter thick_shell7; 
    133136    //  [DEFAULT]=thick_shell8=50.0 [A] 
    134     double thick_shell8; 
     137    Parameter thick_shell8; 
    135138    //  [DEFAULT]=thick_shell9=50.0 [A] 
    136     double thick_shell9; 
     139    Parameter thick_shell9; 
    137140    //  [DEFAULT]=thick_shell10=50.0 [A] 
    138     double thick_shell10; 
     141    Parameter thick_shell10; 
    139142 
    140143    //  [DEFAULT]=func_shell1=2 
    141     int func_shell1; 
     144    Parameter func_shell1; 
    142145    //  [DEFAULT]=func_shell2=2 
    143     int func_shell2; 
     146    Parameter func_shell2; 
    144147    //  [DEFAULT]=func_shell3=2 
    145     int func_shell3; 
     148    Parameter func_shell3; 
    146149    //  [DEFAULT]=func_shell4=2 
    147     int func_shell4; 
     150    Parameter func_shell4; 
    148151    //  [DEFAULT]=func_shell5=2 
    149     int func_shell5; 
     152    Parameter func_shell5; 
    150153    //  [DEFAULT]=func_shell6=2 
    151     int func_shell6; 
     154    Parameter func_shell6; 
    152155    //  [DEFAULT]=func_shell7=2 
    153     int func_shell7; 
     156    Parameter func_shell7; 
    154157    //  [DEFAULT]=func_shell8=2 
    155     int func_shell8; 
     158    Parameter func_shell8; 
    156159    //  [DEFAULT]=func_shell9=2 
    157     int func_shell9; 
     160    Parameter func_shell9; 
    158161    //  [DEFAULT]=func_shell10=2 
    159     int func_shell10; 
    160 } OnionParameters; 
     162    Parameter func_shell10; 
    161163 
    162 double so_kernel(double dq[], double q); 
     164  // Constructor 
     165  OnionModel(); 
    163166 
    164 /// 1D scattering function 
    165 double onion_analytical_1D(OnionParameters *pars, double q); 
    166  
    167 /// 2D scattering function 
    168 double onion_analytical_2D(OnionParameters *pars, double q, double phi); 
    169 double onion_analytical_2DXY(OnionParameters *pars, double qx, double qy); 
     167  // Operators to get I(Q) 
     168  double operator()(double q); 
     169  double operator()(double qx, double qy); 
     170  double calculate_ER(); 
     171  double evaluate_rphi(double q, double phi); 
     172}; 
    170173 
    171174#endif 
Note: See TracChangeset for help on using the changeset viewer.