Changeset 2d1b700 in sasview for sansmodels/src/c_extensions


Ignore:
Timestamp:
Jan 5, 2012 10:52:13 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:
dd60b45
Parents:
7ffa8196
Message:

refactor refl model and auto-generate c++ wrapper at compile time.

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

Legend:

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

    r67424cd r2d1b700  
    33#if !defined(o_h) 
    44#define refl_h 
     5#include "parameters.hh" 
    56 
    67/** 
     
    3132 //[ORIENTATION_PARAMS]= <text> </text> 
    3233 
    33 typedef struct { 
    34         /// number of layers 
    35         //  [DEFAULT]=n_layers=1 
    36         int n_layers; 
     34class ReflModel{ 
     35public: 
     36  // Model parameters 
     37  /// number of layers 
     38  //  [DEFAULT]=n_layers=1 
     39  Parameter n_layers; 
    3740    /// Scale factor 
    3841    //  [DEFAULT]=scale= 1.0 
    39         double scale; 
    40     /// thick_inter0 [A] 
     42  Parameter scale; 
     43    /// thick_inter0 [A] 
    4144    //  [DEFAULT]=thick_inter0=1.0 [A] 
    42         double thick_inter0; 
    43         ///     func_inter0 
    44         //  [DEFAULT]=func_inter0= 0 
    45         double func_inter0; 
    46         ///     sld_bottom0 [1/A^(2)] 
    47         //  [DEFAULT]=sld_bottom0= 2.07e-6 [1/A^(2)] 
    48         double sld_bottom0; 
    49         ///     sld_medium [1/A^(2)] 
    50         //  [DEFAULT]=sld_medium= 1.0e-6 [1/A^(2)] 
    51         double sld_medium; 
    52         /// Background 
    53         //  [DEFAULT]=background=0 
    54         double background; 
     45  Parameter thick_inter0; 
     46  /// func_inter0 
     47  //  [DEFAULT]=func_inter0= 0 
     48  Parameter func_inter0; 
     49  /// sld_bottom0 [1/A^(2)] 
     50  //  [DEFAULT]=sld_bottom0= 2.07e-6 [1/A^(2)] 
     51  Parameter sld_bottom0; 
     52  /// sld_medium [1/A^(2)] 
     53  //  [DEFAULT]=sld_medium= 1.0e-6 [1/A^(2)] 
     54  Parameter sld_medium; 
     55  /// Background 
     56  //  [DEFAULT]=background=0 
     57  Parameter background; 
    5558 
    5659    //  [DEFAULT]=sld_flat1=4.0e-06 [1/A^(2)] 
    57     double sld_flat1; 
     60    Parameter sld_flat1; 
    5861    //  [DEFAULT]=sld_flat2=3.5e-06 [1/A^(2)] 
    59     double sld_flat2; 
     62    Parameter sld_flat2; 
    6063    //  [DEFAULT]=sld_flat3=4.0e-06 [1/A^(2)] 
    61     double sld_flat3; 
     64    Parameter sld_flat3; 
    6265    //  [DEFAULT]=sld_flat4=3.5e-06 [1/A^(2)] 
    63     double sld_flat4; 
     66    Parameter sld_flat4; 
    6467    //  [DEFAULT]=sld_flat5=4.0e-06 [1/A^(2)] 
    65     double sld_flat5; 
     68    Parameter sld_flat5; 
    6669    //  [DEFAULT]=sld_flat6=3.5e-06 [1/A^(2)] 
    67     double sld_flat6; 
     70    Parameter sld_flat6; 
    6871    //  [DEFAULT]=sld_flat7=4.0e-06 [1/A^(2)] 
    69     double sld_flat7; 
     72    Parameter sld_flat7; 
    7073    //  [DEFAULT]=sld_flat8=3.5e-06 [1/A^(2)] 
    71     double sld_flat8; 
     74    Parameter sld_flat8; 
    7275    //  [DEFAULT]=sld_flat9=4.0e-06 [1/A^(2)] 
    73     double sld_flat9; 
     76    Parameter sld_flat9; 
    7477    //  [DEFAULT]=sld_flat10=3.5e-06 [1/A^(2)] 
    75     double sld_flat10; 
     78    Parameter sld_flat10; 
    7679 
    7780    //  [DEFAULT]=thick_inter1=1 [A] 
    78     double thick_inter1; 
     81    Parameter thick_inter1; 
    7982    //  [DEFAULT]=thick_inter2=1 [A] 
    80     double thick_inter2; 
     83    Parameter thick_inter2; 
    8184    //  [DEFAULT]=thick_inter3=1 [A] 
    82     double thick_inter3; 
     85    Parameter thick_inter3; 
    8386    //  [DEFAULT]=thick_inter4=1 [A] 
    84     double thick_inter4; 
     87    Parameter thick_inter4; 
    8588    //  [DEFAULT]=thick_inter5=1 [A] 
    86     double thick_inter5; 
     89    Parameter thick_inter5; 
    8790    //  [DEFAULT]=thick_inter6=1 [A] 
    88     double thick_inter6; 
     91    Parameter thick_inter6; 
    8992    //  [DEFAULT]=thick_inter7=1 [A] 
    90     double thick_inter7; 
     93    Parameter thick_inter7; 
    9194    //  [DEFAULT]=thick_inter8=1 [A] 
    92     double thick_inter8; 
     95    Parameter thick_inter8; 
    9396    //  [DEFAULT]=thick_inter9=1 [A] 
    94     double thick_inter9; 
     97    Parameter thick_inter9; 
    9598    //  [DEFAULT]=thick_inter10=1 [A] 
    96     double thick_inter10; 
     99    Parameter thick_inter10; 
    97100 
    98101    //  [DEFAULT]=thick_flat1=10 [A] 
    99     double thick_flat1; 
     102    Parameter thick_flat1; 
    100103    //  [DEFAULT]=thick_flat2=100 [A] 
    101     double thick_flat2; 
     104    Parameter thick_flat2; 
    102105    //  [DEFAULT]=thick_flat3=100 [A] 
    103     double thick_flat3; 
     106    Parameter thick_flat3; 
    104107    //  [DEFAULT]=thick_flat4=100 [A] 
    105     double thick_flat4; 
     108    Parameter thick_flat4; 
    106109    //  [DEFAULT]=thick_flat5=100 [A] 
    107     double thick_flat5; 
     110    Parameter thick_flat5; 
    108111    //  [DEFAULT]=thick_flat6=100 [A] 
    109     double thick_flat6; 
     112    Parameter thick_flat6; 
    110113    //  [DEFAULT]=thick_flat7=100 [A] 
    111     double thick_flat7; 
     114    Parameter thick_flat7; 
    112115    //  [DEFAULT]=thick_flat8=100 [A] 
    113     double thick_flat8; 
     116    Parameter thick_flat8; 
    114117    //  [DEFAULT]=thick_flat9=100 [A] 
    115     double thick_flat9; 
     118    Parameter thick_flat9; 
    116119    //  [DEFAULT]=thick_flat10=100 [A] 
    117     double thick_flat10; 
     120    Parameter thick_flat10; 
    118121 
    119122    //  [DEFAULT]=func_inter1=0 
    120     double func_inter1; 
     123    Parameter func_inter1; 
    121124    //  [DEFAULT]=func_inter2=0 
    122     double func_inter2; 
     125    Parameter func_inter2; 
    123126    //  [DEFAULT]=func_inter3=0 
    124     double func_inter3; 
     127    Parameter func_inter3; 
    125128    //  [DEFAULT]=func_inter4=0 
    126     double func_inter4; 
     129    Parameter func_inter4; 
    127130    //  [DEFAULT]=func_inter5=0 
    128     double func_inter5; 
     131    Parameter func_inter5; 
    129132    //  [DEFAULT]=func_inter6=0 
    130     double func_inter6; 
     133    Parameter func_inter6; 
    131134    //  [DEFAULT]=func_inter7=0 
    132     double func_inter7; 
     135    Parameter func_inter7; 
    133136    //  [DEFAULT]=func_inter8=0 
    134     double func_inter8; 
     137    Parameter func_inter8; 
    135138    //  [DEFAULT]=func_inter9=0 
    136     double func_inter9; 
     139    Parameter func_inter9; 
    137140    //  [DEFAULT]=func_inter10=0 
    138     double func_inter10; 
     141    Parameter func_inter10; 
    139142 
    140143 
    141 } ReflParameters; 
     144  // Constructor 
     145  ReflModel(); 
    142146 
    143 double re_kernel(double dq[], double q); 
    144  
    145 /// 1D scattering function 
    146 double refl_analytical_1D(ReflParameters *pars, double q); 
    147  
    148 /// 2D scattering function 
    149 double refl_analytical_2D(ReflParameters *pars, double q, double phi); 
    150 double refl_analytical_2DXY(ReflParameters *pars, double qx, double qy); 
     147  // Operators to get I(Q) 
     148  double operator()(double q); 
     149  double operator()(double qx, double qy); 
     150  double calculate_ER(); 
     151  double evaluate_rphi(double q, double phi); 
     152}; 
    151153 
    152154#endif 
Note: See TracChangeset for help on using the changeset viewer.