Ignore:
Timestamp:
Mar 25, 2008 9:05:04 AM (16 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:
f629e346
Parents:
829eee9
Message:

Fixed new models - still need validation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/BEPolyelectrolyte.py

    r829eee9 r3db3895  
    22"""  
    33     
    4     Provide F(x) = K*1/(4*pi()*Lb*(alpha)^(2)*(q^(2)+k2)/(1+(r02)^(2))*(q^(2)+k2)\ 
     4    Provide F(x) = K*1/(4*pi*Lb*(alpha)^(2))*(q^(2)+k2)/(1+(r02)^(2))*(q^(2)+k2)\ 
    55                       *(q^(2)-(12*h*C/b^(2))) 
    66    BEPolyelectrolyte as a BaseComponent model 
     
    1515        Class that evaluates a BEPolyelectrolyte. 
    1616         
    17         F(x) = K*1/(4*pi()*Lb*(alpha)^(2)*(q^(2)+k2)/(1+(r02)^(2))*(q^(2)+k2)\ 
     17        F(x) = K*1/(4*pi*Lb*(alpha)^(2))*(q^(2)+k2)/(1+(r02)^(2))*(q^(2)+k2)\ 
    1818                       *(q^(2)-(12*h*C/b^(2))) 
    1919         
     
    4040        ## Define parameters 
    4141        self.params = {} 
    42         self.params['K']    = 10 
    43         self.params['Lb']   = 7.1 
    44         self.params['H']    = 12 
    45         self.params['B']    = 10 
    46         self.params['Cs']   = 0.0 
     42        self.params['k']    = 10 
     43        self.params['lb']   = 7.1 
     44        self.params['h']    = 12 
     45        self.params['b']    = 10 
     46        self.params['cs']   = 0.0 
    4747        self.params['alpha']= 0.05 
    48         self.params['C']    = 0.7 
    49         self.params['bkd']  = 0.001 
     48        self.params['c']    = 0.7 
     49        self.params['background']  = 0.0 
    5050         
    5151 
    5252        ## Parameter details [units, min, max] 
    5353        self.details = {} 
    54         self.details['K']    = ['barns', None, None] 
    55         self.details['Lb'] = ['A', None, None] 
    56         self.details['H']   = ['A^{-3}', None, None] 
    57         self.details['B']    = ['A', None, None] 
    58         self.details['Cs'] = ['mol/L', None, None] 
     54        self.details['k']    = ['barns', None, None] 
     55        self.details['lb'] = ['A', None, None] 
     56        self.details['h']   = ['A-3', None, None] 
     57        self.details['b']    = ['A', None, None] 
     58        self.details['cs'] = ['mol/L', None, None] 
    5959        self.details['alpha']   = ['', None, None] 
    60         self.details['C']    = ['mol/L', None, None] 
    61         self.details['bkd'] = ['', None, None] 
     60        self.details['c']    = ['mol/L', None, None] 
     61        self.details['background'] = ['cm-1', None, None] 
    6262        
    6363                
     
    6565        """ 
    6666            Evaluate   
    67             F(x) = K*1/(4*pi()*Lb*(alpha)^(2)*(q^(2)+k2)/(1+(r02)^(2))*(q^(2)+k2)\ 
     67            F(x) = K*1/(4*pi*Lb*(alpha)^(2))*(q^(2)+k2)/(1+(r02)^(2))*(q^(2)+k2)\ 
    6868                       *(q^(2)-(12*h*C/b^(2))) 
    6969         
     
    7171                   The inverse Debye Length: K2 = 4*pi*Lb*(2*Cs+alpha*C) 
    7272                   r02 =1/alpha/Ca^(0.5)*(B/(48*pi*Lb)^(0.5)) 
    73                    Ca = C*6.022136* exp(-4) 
     73                   Ca = C*6.022136e-4 
    7474        """ 
    75         K2 = 4 * math.pi * self.params['Lb'] * (2*self.params['Cs'] + \ 
    76                  self.params['alpha'] * self.params['C']) 
     75        Ca = self.params['c'] * 6.022136e-4 
    7776         
    78         Ca = self.params['C'] * 6.022136 * math.exp(-4) 
     77        K2 = 4.0 * math.pi * self.params['lb'] * (2*self.params['cs'] + \ 
     78                 self.params['alpha'] * Ca) 
    7979         
    80         r02 =1/(self.params['alpha'] * math.pow(Ca,0.5) * \ 
    81                 (self.params['B']/math.pow((48*math.pi *self.params['Lb']),0.5))) 
     80        r02 = 1.0/self.params['alpha']/math.sqrt(Ca) * \ 
     81                (self.params['b']/math.sqrt((48.0*math.pi *self.params['lb']))) 
    8282         
    83         return ( self.params['K']/( ( 4 * math.pi *self.params['Lb']*\ 
    84                 (self.params['alpha']**2)*\ 
    85                  ( x**2 + K2 )*( 1 + r02**2 ) * ( x**2 + K2 ) *\ 
    86                  (x**2 - ( 12 * self.params['H'] * \ 
    87                   self.params['C']/(self.params['B']**2) ))  )))+  self.params['bkd'] 
     83        return self.params['k']/( 4.0 * math.pi * self.params['lb'] * self.params['alpha']**2 ) \ 
     84               * ( x**2 + K2 ) / ( 1.0 + r02**2 * ( x**2 + K2 ) \ 
     85                    * (x**2 - ( 12.0 * self.params['h'] \ 
     86                    * Ca/(self.params['b']**2) ))) \ 
     87                    + self.params['background'] 
    8888         
    8989    
    9090    def run(self, x = 0.0): 
    9191        """ Evaluate the model 
    92             @param x: simple value 
     92            @param x: input q-value (float or [float, float] as [r, theta]) 
    9393            @return: (debye value) 
    9494        """ 
     
    102102    def runXY(self, x = 0.0): 
    103103        """ Evaluate the model 
    104             @param x: simple value 
     104            @param x: input q-value (float or [float, float] as [qx, qy]) 
    105105            @return: debye value 
    106106        """ 
     
    110110            raise ValueError, "Tuples are not allowed as input to BaseComponent models" 
    111111        else: 
    112             return self._BEPolye(x) 
     112            return self._BEPoly(x) 
Note: See TracChangeset for help on using the changeset viewer.