@@ -43,18 +43,21 @@ created. Related accepted ADRs consulted: `iucr-cif-tag-alignment.md`,
4343 ` _pd_pref_orient_March_Dollase.* ` export; ` march_random_fract `
4444 namespaced under ` _easydiffraction_pref_orient.march_random_fract ` and
4545 omitted from the report when 0; ` .hkl ` /` .fract ` excluded.
46- - ** Known backend limitation (ADR Decision 6):** CrysPy 0.11.0's texture
46+ - ** CrysPy convention (ADR Decision 6):** CrysPy 0.11.0's texture
4747 function uses a reciprocal ` g1 = 1/r ` convention (handled by the
4848 backend) and is not volume-normalised (absorbed by scale), so the
4949 exposed ` march_r ` is the standard, portable March coefficient. The
50- verification notebook ** documents this mismatch** rather than
51- asserting agreement.
50+ verification notebook documents this convention and, after refining
51+ ` march_r ` /` march_random_fract ` /scale, ** asserts agreement** with
52+ FullProf within the closeness tolerances.
5253
5354## Open questions
5455
55- - None blocking. The CrysPy formula divergence is documented and an
56- upstream issue is staged in ` tmp/cryspy/preferred-orientation/ ` ; this
57- plan does not depend on its resolution.
56+ - None blocking. CrysPy's reciprocal/non-normalised convention is
57+ documented (Decision 6) and handled by the backend mapping; a
58+ convention note for upstream is staged in
59+ ` tmp/cryspy/preferred-orientation/ ` . This plan does not depend on its
60+ resolution.
5861
5962## No new dependencies
6063
@@ -243,17 +246,23 @@ CrysPy is already a dependency; no `pyproject.toml`/`pixi.toml`/
243246### Cross-engine verification notebook (on the LBCO base)
244247
2452481 . Copy ` docs/docs/verification/fullprof/pd-neut-cwl_pv_lbco/lbco.pcr ` ,
246- enable a single March–Dollase direction (texture axis via the phase
247- ` Pr1 Pr2 Pr3 ` line and a non-zero ` Pref1 ` ), re-run FullProf locally
248- (` ~/Applications/fullprof ` ) to regenerate ` .prf ` /` .bac ` /` .sum ` under
249+ enable the March–Dollase model (` Nor=1 ` ) along the phase
250+ ` Pr1 Pr2 Pr3 ` direction with non-zero ` Pref1 ` ** and** ` Pref2 ` (the
251+ reference uses ` Pref1=1.2 ` , ` Pref2=0.3 ` , axis ` [0 0 1] ` ), re-run
252+ FullProf locally (` ~/Applications/fullprof ` ) to regenerate
253+ ` .prf ` /` .bac ` /` .sum ` under
249254 ` docs/docs/verification/fullprof/pd-neut-cwl_pv-march_lbco/ ` .
2502552 . Add ` docs/docs/verification/pd-neut-cwl_pv-march_lbco.py ` building
251256 the same LBCO model, setting
252257 ` expt.preferred_orientation.create(phase_id='lbco', march_r=<Pref1>, march_random_fract=<Pref2>, index_h=<h>, index_k=<k>, index_l=<l>) ` ,
253258 and overlaying CrysPy vs FullProf. Compare CrysPy-only (no CrysFML
254- column, since PO is CrysPy-only). Add a markdown cell explaining the
255- CrysPy formula difference (link the upstream issue): expect agreement
256- at ` r=1 ` and a quantified divergence for ` r ≠ 1 ` .
259+ column, since PO is CrysPy-only). Add a markdown cell documenting
260+ CrysPy's convention — it uses the reciprocal ` g1 = 1/r ` (the backend
261+ inverts the standard ` march_r ` ) and a non-volume-normalised factor
262+ that the scale absorbs, so the as-calculated pattern shows an overall
263+ offset. Then refine ` march_r ` , ` march_random_fract ` , and the scale:
264+ the refined CrysPy result recovers ` Pref1 ` /` Pref2 ` and agrees with
265+ FullProf within the verification tolerances.
2572663 . ` pixi run notebook-prepare ` to regenerate the ` .ipynb ` ; commit source
258267 ` .py ` + generated ` .ipynb ` + FullProf reference together.
259268
0 commit comments