Using rigid bodies in diffpy.cmi

19 views
Skip to first unread message

Víctor Quezada

unread,
Apr 9, 2026, 6:04:40 PM (22 hours ago) Apr 9
to diffpy...@googlegroups.com
Hello everyone,

I am reaching you out for advice on how to set up rigid bodies in diffpy.cmi, specifically, I need to build a hexaqua chromium (III) octahedra, fix the chromium position, restrain bond angles and distances and allow to rotate the octahedra through the equatorial and apical axis (first individually, then simultaneously). However, I have no idea on how to configure this in diffpy.cmi

I am aware that discrete structures can be defined by specifying atomic positions in xyz coordinates, but I don't know the language to apply the restrains and direct diffpy.cmi to iterate through the rotations of the chromium octahedra. Since this is a phosphonate-based MOF material, I would also like to explore the rotation of the phosphonate groups to explore other potential -PO(OH)2--(OH2)5Cr distances. This is a particular class of MOFs where the phosphonate groups are not coordinating to the Cr ions, but interacting through hydrogen bonding to the fully hydrated Cr octahedra. I am currently using a model obtained through Rietveld refinement, which describes most of the features but it fails to fit the two peaks around 2.5 A (see attached fit).

I have been educating myself in PDF and diffpy.cmi using the book "Atomic PDF analysis: A Primer" as I am not a PDF nor coding expert. I checked briefly  https://github.com/diffpy/cmi_exchange and couldn't find directions about this in the scripts description.

Any help, suggestions or directions for reading will be greatly appreciated.

I can provide more details if needed.

Best,

Victor Quezada Novoa, PhD.
Postdoctoral fellow
Shimizu research group
University of Calgary
H-CALF-55_no_guest_273K.pdf

Tomasz Stawski

unread,
12:45 AM (15 hours ago) 12:45 AM
to diffpy...@googlegroups.com
Hi Victor,

I have implemented rigid bodies in this project:

Maybe have a look, and write if you have any questions.

Best regards,
Tomasz

--
You received this message because you are subscribed to the Google Groups "diffpy-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to diffpy-users...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/diffpy-users/CACDOnFALuBvXJjMsdHS11bPggVZ_JOMj4UBrm2Ku-rOp9v7FRQ%40mail.gmail.com.

Víctor Quezada

unread,
12:52 AM (15 hours ago) 12:52 AM
to diffpy...@googlegroups.com
Hello Tomasz,

Thank you very much for sharing this information, I will take a look and try my best to implement it in my system. For sure I will have some questions.

Best,

Victor 

Tomasz Stawski

unread,
1:04 AM (15 hours ago) 1:04 AM
to diffpy...@googlegroups.com
We are preparing a publication and I will be updating this repo next week. The code will stay the same but the documentation will be improved.

Best,
Tomasz

Simon Billinge

unread,
7:15 AM (8 hours ago) 7:15 AM
to diffpy...@googlegroups.com
wow, this is great, thanks Tomasz!

Back in the day Pavol Juhas and Dragica Prill did this using quaternions:
Dragica Prill, Pavol Juh´as, S. J. L. Billinge, and Martin U. Schmidt. “Towards solution and
refinement of organic crystal structures by fitting to the atomic pair distribution function”. In:
Acta Crystallogr. A 72.1 (2016), pp. 62–72. doi: 10.1107/S2053273315022457.

I am not sure if I can dig up the code or not, I will take a look.

S



--
Simon Billinge
Professor of Materials Science
Director, CNSI (California NanoSystems Institute)
University of California, Santa Barbara
Reply all
Reply to author
Forward
0 new messages