Changeset 4046 for trunk/GSASIIstrMath.py
- Timestamp:
- Jun 30, 2019 9:53:33 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrMath.py
r4038 r4046 3013 3013 continue 3014 3014 Phase = Phases[phase] 3015 if histogram not in Phase['Histograms']: 3016 continue 3015 3017 im = 0 3016 3018 if Phase['General'].get('Modulated',False): … … 3114 3116 print ('GetFobsSq t=',time.time()-starttime) 3115 3117 3116 def getPowderProfile(parmDict,x,varylist,Histogram,Phases,calcControls,pawleyLookup ):3118 def getPowderProfile(parmDict,x,varylist,Histogram,Phases,calcControls,pawleyLookup,histogram=None): 3117 3119 'Computes the powder pattern for a histogram based on contributions from all used phases' 3118 3120 if GSASIIpath.GetConfigValue('Show_timing',False): starttime = time.time() … … 3173 3175 continue 3174 3176 Phase = Phases[phase] 3177 if histogram and not histogram in Phase['Histograms']: 3178 continue 3175 3179 pId = Phase['pId'] 3176 3180 pfx = '%d::'%(pId) … … 3318 3322 ptx.pyqlmninit() #initialize fortran arrays for spherical harmonics for each processor 3319 3323 parmDict,x,varylist,Histogram,Phases,rigidbodyDict,calcControls,pawleyLookup,dependentVars = args[:9] 3320 prc=0 3321 tprc=1 3324 prc,tprc,histogram = 0,1,None 3322 3325 if len(args) >= 10: prc=args[9] 3323 3326 if len(args) >= 11: tprc=args[10] 3327 if len(args) >= 12: histogram=args[11] 3324 3328 def cellVaryDerv(pfx,SGData,dpdA): 3325 3329 if SGData['SGLaue'] in ['-1',]: … … 3390 3394 continue 3391 3395 Phase = Phases[phase] 3396 if histogram and histogram not in Phase['Histograms']: 3397 continue 3392 3398 SGData = Phase['General']['SGData'] 3393 3399 SGMT = np.array([ops[0].T for ops in SGData['SGOps']]) … … 3855 3861 dMdvh = None 3856 3862 depDerivDict = None 3857 profArgs = [ 3863 # old approach, create all args prior to use 3864 # profArgs = [ 3865 # (parmDict,x[xB:xF],varylist,Histogram,Phases,rigidbodyDict,calcControls,pawleyLookup,dependentVars, 3866 # i,ncores,histogram) for i in range(ncores)] 3867 # for dmdv,depDerivs in MPpool.imap_unordered(getPowderProfileDervMP,profArgs): 3868 # better, use a generator so arg is created as used 3869 profGenArgs = ( 3858 3870 (parmDict,x[xB:xF],varylist,Histogram,Phases,rigidbodyDict,calcControls,pawleyLookup,dependentVars, 3859 i,ncores ) for i in range(ncores)]3860 for dmdv,depDerivs in MPpool.imap_unordered(getPowderProfileDervMP,prof Args):3871 i,ncores,histogram) for i in range(ncores)) 3872 for dmdv,depDerivs in MPpool.imap_unordered(getPowderProfileDervMP,profGenArgs): 3861 3873 if dMdvh is None: 3862 3874 dMdvh = dmdv … … 3868 3880 else: 3869 3881 dMdvh,depDerivDict = getPowderProfileDervMP([parmDict,x[xB:xF], 3870 varylist,Histogram,Phases,rigidbodyDict,calcControls,pawleyLookup,dependentVars ])3882 varylist,Histogram,Phases,rigidbodyDict,calcControls,pawleyLookup,dependentVars,0,1,histogram]) 3871 3883 #dMdvh = getPowderProfileDerv(parmDict,x[xB:xF], 3872 3884 # varylist,Histogram,Phases,rigidbodyDict,calcControls,pawleyLookup,dependentVars) … … 3950 3962 xF = np.searchsorted(x,Limits[1])+1 3951 3963 yc[xB:xF],yb[xB:xF] = getPowderProfile(parmDict,x[xB:xF], 3952 varylist,Histogram,Phases,calcControls,pawleyLookup )3964 varylist,Histogram,Phases,calcControls,pawleyLookup,histogram) 3953 3965 yc[xB:xF] += yb[xB:xF] 3954 3966 if not np.any(y): #fill dummy data
Note: See TracChangeset
for help on using the changeset viewer.