Changeset 409 for trunk/GSASIIElem.py


Ignore:
Timestamp:
Nov 8, 2011 4:27:01 PM (10 years ago)
Author:
vondreele
Message:

make it do CW neutrons - 1st pass at it

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIElem.py

    r380 r409  
    1919
    2020def GetFormFactorCoeff(El):
    21     """Read form factor coefficients from `atomdata.asc` file
     21    """Read X-ray form factor coefficients from `atomdata.asc` file
    2222
    2323    :param El: element 1-2 character symbol case irrevelant
    2424    :return: `FormFactors`: list of form factor dictionaries
    2525   
    26     Each form factor dictionary is:
     26    Each X-ray form factor dictionary is:
    2727   
    2828    * `Symbol`: 4 character element symbol with valence (e.g. 'NI+2')
     
    3030    * `fa`: 4 A coefficients
    3131    * `fb`: 4 B coefficients
    32     * `fc`: C coefficient
     32    * `fc`: C coefficient
     33   
    3334    """
    3435    ElS = El.upper()
     
    9394    S = '1'
    9495    AtomInfo = {}
     96    Isotopes = {}
    9597    Mass = []
    9698    while S:
     
    100102                if not Mass:                                 #picks 1st one; natural abundance or 1st isotope
    101103                    Mass = float(S[10:19])
    102                 if S[5:9] == '_SIZ':
     104                if S[6] in [' ','1','2','3','4','5','6','7','8','9']:                       
     105                    isoName = S[6:9]
     106                    if isoName == '   ':
     107                        isoName = 'Nat. Abund.'              #natural abundance
     108                    if S[76:78] in ['LS','BW']:     #special anomalous scattering length info
     109                        St = [S[10:19],S[19:25],S[25:31],S[31:38],S[38:44],S[44:50],
     110                            S[50:56],S[56:62],S[62:68],S[68:74],]
     111                        Vals = []
     112                        for item in St:
     113                            if item.strip():
     114                                Vals.append(float(item.strip()))
     115                        Isotopes[isoName.rstrip()] = Vals                       
     116                    else:
     117                        Isotopes[isoName.rstrip()] = [float(S[10:19]),float(S[19:25])]
     118                elif S[5:9] == '_SIZ':
    103119                    Z=int(S[:2])
    104120                    Symbol = S[3:5].strip().lower().capitalize()
     
    108124                    Color = ET.ElTable[Elements.index(Symbol)][6]
    109125    FFdata.close()
    110     AtomInfo={'Symbol':Symbol,'Mass':Mass,'Z':Z,'Drad':Drad,'Arad':Arad,'Vdrad':Vdrad,'Color':Color}   
     126    AtomInfo={'Symbol':Symbol,'Isotopes':Isotopes,'Mass':Mass,'Z':Z,'Drad':Drad,'Arad':Arad,'Vdrad':Vdrad,'Color':Color}   
    111127    return AtomInfo
    112128     
     
    244260    t = -fb[:,np.newaxis]*SQ
    245261    return np.sum(fa[:,np.newaxis]*np.exp(t)[:],axis=0)+El['fc']
     262       
     263def BlenFac(El,wave):
     264    pass
     265   
     266#        F(I) = BLEN(I)
     267#        IF ( BFAN(1,I).NE.0.0 ) THEN
     268#          EMEV = 81.80703/XRAY**2
     269#          GAM2 = BFAN(4,I)**2
     270#          T1 = EMEV-BFAN(3,I)
     271#          D1 = T1**2+GAM2
     272#          T2 = EMEV-BFAN(6,I)
     273#          D2 = T2**2+GAM2
     274#          T3 = EMEV-BFAN(8,I)
     275#          D3 = T3**2+GAM2
     276#          FP(I) = BFAN(1,I)*(T1/D1+BFAN(5,I)*T2/D2+BFAN(7,I)*T3/D3)
     277#          FPP(I) = -BFAN(2,I)*(1.0/D1+BFAN(5,I)/D2+BFAN(7,I)/D3)
     278#        ELSE
     279#          FP(I) = 0.0
     280#          FPP(I) = 0.0
     281#        END IF
     282   
    246283   
    247284def ComptonFac(El,SQ):
Note: See TracChangeset for help on using the changeset viewer.