Ignore:
Timestamp:
Jan 7, 2010 5:04:25 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:
dfa8832
Parents:
4cbaf35
Message:

corrections on the definition of polydispersity as suggested by steve K: should be normalized by average volume

File:
1 edited

Legend:

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

    rf9bf661 rc451be9  
    8181        double sum = 0.0; 
    8282        double norm = 0.0; 
     83        double vol = 0.0; 
    8384 
    8485        // Loop over semi axis A weight points 
     
    9394                        for(int k=0; k< (int)weights_semi_axisC.size(); k++) { 
    9495                                dp[3] = weights_semi_axisC[k].value; 
    95  
     96                                //Un-normalize  by volume 
    9697                                sum += weights_semi_axisA[i].weight 
    97                                         * weights_semi_axisB[j].weight * weights_semi_axisC[k].weight* TriaxialEllipsoid(dp, q); 
     98                                        * weights_semi_axisB[j].weight * weights_semi_axisC[k].weight* TriaxialEllipsoid(dp, q) 
     99                                        * weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value; 
     100                                //Find average volume 
     101                                vol += weights_semi_axisA[i].weight 
     102                                        * weights_semi_axisB[j].weight * weights_semi_axisC[k].weight 
     103                                        * weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value; 
     104 
    98105                                norm += weights_semi_axisA[i].weight 
    99106                                        * weights_semi_axisB[j].weight * weights_semi_axisC[k].weight; 
     
    101108                } 
    102109        } 
     110        if (vol != 0.0 && norm != 0.0) { 
     111                //Re-normalize by avg volume 
     112                sum = sum/(vol/norm);} 
     113 
    103114        return sum/norm + background(); 
    104115} 
     
    150161        double sum = 0.0; 
    151162        double norm = 0.0; 
     163        double norm_vol = 0.0; 
     164        double vol = 0.0; 
    152165 
    153166        // Loop over semi axis A weight points 
     
    173186                                                for(int n=0; n <(int)weights_psi.size(); n++) { 
    174187                                                        dp.axis_psi = weights_psi[n].value; 
    175  
     188                                                        //Un-normalize  by volume 
    176189                                                        double _ptvalue = weights_semi_axisA[i].weight 
    177190                                                                * weights_semi_axisB[j].weight 
     
    180193                                                                * weights_phi[m].weight 
    181194                                                                * weights_psi[n].weight 
    182                                                                 * triaxial_ellipsoid_analytical_2DXY(&dp, qx, qy); 
     195                                                                * triaxial_ellipsoid_analytical_2DXY(&dp, qx, qy) 
     196                                                                * weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value; 
    183197                                                        if (weights_theta.size()>1) { 
    184198                                                                _ptvalue *= sin(weights_theta[k].value); 
    185199                                                        } 
    186200                                                        sum += _ptvalue; 
     201                                                        //Find average volume 
     202                                                        vol += weights_semi_axisA[i].weight 
     203                                                                * weights_semi_axisB[j].weight 
     204                                                                * weights_semi_axisC[k].weight 
     205                                                                * weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value; 
     206                                                        //Find norm for volume 
     207                                                        norm_vol += weights_semi_axisA[i].weight 
     208                                                                * weights_semi_axisB[j].weight 
     209                                                                * weights_semi_axisC[k].weight; 
    187210 
    188211                                                        norm += weights_semi_axisA[i].weight 
     
    203226        // integration (see documentation). 
    204227        if (weights_theta.size()>1) norm = norm / asin(1.0); 
     228 
     229        if (vol != 0.0 && norm_vol != 0.0) { 
     230                //Re-normalize by avg volume 
     231                sum = sum/(vol/norm_vol);} 
     232 
    205233        return sum/norm + background(); 
    206234} 
Note: See TracChangeset for help on using the changeset viewer.