Changeset 3130


Ignore:
Timestamp:
Oct 12, 2017 10:29:57 AM (4 years ago)
Author:
toby
Message:

updates for G2Scriptable and associated tutorial

Files:
9 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIscriptable.py

    r3129 r3130  
    278278Mustrain
    279279\                     type                   Mustrain model. One of 'isotropic',
    280                                              'uniaxial', or 'generalized'
    281 \                     direction              For uniaxial. A list of three integers,
     280                                             'uniaxial', or 'generalized'. Should always
     281                                             be specified.
     282\                     direction              For uniaxial only. A list of three
     283                                             integers,
    282284                                             the [hkl] direction of the axis.
    283 \                     refine                 Usually boolean, whether or not to refine.
     285\                     refine                 Usually boolean, set to True to refine.
    284286                                             When in doubt, set it to true.
    285287                                             For uniaxial model, can specify list
    286                                              of 'axial' or 'equatorial'. If boolean
    287                                              given sets both axial and equatorial.
     288                                             of 'axial' or 'equatorial' or a single
     289                                             boolean sets both axial and equatorial.
     290Size                                         Not implemented
     291\                     type                   Size broadening model. One of 'isotropic',
     292                                             'uniaxial', or 'ellipsoid'. Should always
     293                                             be specified.
     294\                     direction              For uniaxial only. A list of three
     295                                             integers,
     296                                             the [hkl] direction of the axis.
     297\                     refine                 A boolean, True to refine.
    288298Pref.Ori.                                    Boolean, True to refine
    289299Show                                         Boolean, True to refine
    290 Size                                         Not implemented
    291300Use                                          Boolean, True to refine
    292301Scale                                        Phase fraction; Boolean, True to refine
     
    21662175                        mustrain = h['Mustrain']
    21672176                        newType = None
     2177                        direction = None
    21682178                        if isinstance(val, (unicode, str)):
    21692179                            if val in ['isotropic', 'uniaxial', 'generalized']:
     
    22072217
    22082218                        if direction:
    2209                             direction = [int(n) for n in direction]
    22102219                            if len(direction) != 3:
    22112220                                raise ValueError("Expected hkl, found", direction)
     2221                            direction = [int(n) for n in direction]
    22122222                            mustrain[3] = direction
     2223                elif key == 'Size':
     2224                    for h in histograms:
     2225                        size = h['Size']
     2226                        newType = None
     2227                        direction = None
     2228                        if isinstance(val, (unicode, str)):
     2229                            if val in ['isotropic', 'uniaxial', 'ellipsoidal']:
     2230                                newType = val
     2231                            else:
     2232                                raise ValueError("Not a valid Size type: " + val)
     2233                        elif isinstance(val, dict):
     2234                            newType = val.get('type', None)
     2235                            direction = val.get('direction', None)
     2236
     2237                        if newType:
     2238                            size[0] = newType
     2239                            refine = val.get('refine')
     2240                            if newType == 'isotropic' and refine is not None:
     2241                                size[2][0] = bool(refine)
     2242                            elif newType == 'uniaxial' and refine is not None:
     2243                                size[2][1] = bool(refine)
     2244                                size[2][2] = bool(refine)
     2245                            elif newType == 'ellipsoidal' and refine is not None:
     2246                                size[5] = [bool(refine) for p in size[5]]
     2247
     2248                        if direction:
     2249                            if len(direction) != 3:
     2250                                raise ValueError("Expected hkl, found", direction)
     2251                            direction = [int(n) for n in direction]
     2252                            size[3] = direction
    22132253                elif key == 'Pref.Ori.':
    22142254                    for h in histograms:
     
    22172257                    for h in histograms:
    22182258                        h['Show'] = bool(val)
    2219                 elif key == 'Size':
    2220                     for h in histograms:
    2221                         if h['Size'][0] == 'isotropic':
    2222                             h['Size'][2][0] = bool(val)
    2223                         elif h['Size'][0] == 'uniaxial':
    2224                             h['Size'][2][1] = bool(val)
    2225                             h['Size'][2][2] = bool(val)
    2226                         else:   # TODO
    2227                             raise NotImplementedError()
    22282259                elif key == 'Use':
    22292260                    for h in histograms:
     
    22722303                    for h in histograms:
    22732304                        mustrain = h['Mustrain']
    2274                         mustrain[2] = [False for p in mustrain[1]]
     2305                        mustrain[2] = [False for p in mustrain[2]]
    22752306                        mustrain[5] = [False for p in mustrain[4]]
    22762307                elif key == 'Pref.Ori.':
     
    22812312                        h['Show'] = False
    22822313                elif key == 'Size':
    2283                     raise NotImplementedError()
     2314                    for h in histograms:
     2315                        size = h['Size']
     2316                        size[2] = [False for p in size[2]]
     2317                        size[5] = [False for p in size[5]]
    22842318                elif key == 'Use':
    22852319                    for h in histograms:
Note: See TracChangeset for help on using the changeset viewer.