Skip to content

Commit

Permalink
adding beta ADPS (#356)
Browse files Browse the repository at this point in the history
* removed save_aniso_betaIJ2
* added "betaani" option to _atom_site.adp_type
* Augment _atom_site_aniso.matrix_beta dREL with _atom_site.tensor_beta
* make _atom_site.tensor_beta an alias of _atom_site_aniso.matrix_beta

I've also altered dREL that calls _atom_site.tensor_beta. 
* Declare _atom_site.tensor_beta_{su} as an alias of _atom_site_aniso.matrix_beta_{su}.
* Enhance description of _atom_site_aniso.matrix_beta

Co-authored-by: Antanas Vaitkus <antanas.vaitkus90@gmail.com>
Co-authored-by: James Hester <jamesrhester@gmail.com>
  • Loading branch information
3 people committed Jul 6, 2023
1 parent a8b8cb0 commit eb0726f
Show file tree
Hide file tree
Showing 2 changed files with 338 additions and 112 deletions.
345 changes: 262 additions & 83 deletions cif_core.dic
Original file line number Diff line number Diff line change
Expand Up @@ -6230,7 +6230,7 @@ save_refln.f_complex

Loop s as space_group_symop {

t = Exp(-h * s.R * a.tensor_beta * s.RT * h)
t = Exp(-h * s.R * a.matrix_beta * s.RT * h)

fc += f * t * ExpImag(TwoPi *( h *( s.R * a.fract_xyz + s.T)))
} }
Expand Down Expand Up @@ -14167,7 +14167,7 @@ save_model_site.adp_matrix_beta
a = atom_site[m.label]
s = space_group_symop[SymKey(m.symop)]

_model_site.ADP_matrix_beta = s.R * a.tensor_beta * s.RT
_model_site.ADP_matrix_beta = s.R * a.matrix_beta * s.RT
;

save_
Expand Down Expand Up @@ -20670,6 +20670,7 @@ save_atom_site.adp_type
Bani 'Anisotropic Bij.'
Biso 'Isotropic B.'
Bovl 'Overall B.'
betaani 'Anisotropic betaij.'

save_

Expand Down Expand Up @@ -21672,87 +21673,6 @@ save_atom_site.site_symmetry_order

save_

save_atom_site.tensor_beta

_definition.id '_atom_site.tensor_beta'
_definition.update 2021-09-24
_description.text
;
The symmetric anisotropic atomic displacement tensor beta[I,J]
appears in a structure factor expression as:

t = exp - [ β11 h h + ............ 2 β23 k l ]

It is related to the ADP matrices U(IJ) and B(IJ) as follows:

t = exp - 2π^2^ ( U11 h h a* a* + ...... 2 U23 k l b* c* )
t = exp - 0.25 ( B11 h h a* a* + ...... 2 B23 k l b* c* )
;
_name.category_id atom_site
_name.object_id tensor_beta
_type.purpose Measurand
_type.source Derived
_type.container Matrix
_type.dimension '[3,3]'
_type.contents Real
_units.code none
_method.purpose Evaluation
_method.expression
;
With a as atom_site

label = a.label

If (a.ADP_type == 'Uani') {
Loop b as atom_site_aniso {
If(label == b.label) {

UIJ = b.matrix_U
Break
} } }

Else If (a.ADP_type == 'Bani') {
Loop b as atom_site_aniso {
If(label == b.label) {

UIJ = b.matrix_B / (8 * Pi**2)
Break
} } }

Else {
If (a.ADP_type == 'Uiso') U = a.U_iso_or_equiv
Else U = a.B_iso_or_equiv / (8 * Pi**2)

UIJ = U * _cell.convert_Uiso_to_Uij
}

CUB = _cell.convert_Uij_to_betaij

_atom_site.tensor_beta = CUB * UIJ * CUB
;

save_

save_atom_site.tensor_beta_su

_definition.id '_atom_site.tensor_beta_su'
_definition.update 2021-09-23
_description.text
;
Standard uncertainty of _atom_site.tensor_beta.
;
_name.category_id atom_site
_name.object_id tensor_beta_su
_name.linked_item_id '_atom_site.tensor_beta'
_type.purpose SU
_type.source Derived
_type.container Matrix
_type.dimension '[3,3]'
_type.contents Real
_units.code none

save_

save_atom_site.type_symbol

_definition.id '_atom_site.type_symbol'
Expand Down Expand Up @@ -22141,6 +22061,150 @@ save_atom_site_aniso.b_33_su

save_

save_atom_site_aniso.beta_11

_definition.id '_atom_site_aniso.beta_11'
_alias.definition_id '_atom_site_aniso_beta_11'
_name.category_id atom_site_aniso
_name.object_id beta_11

_import.get [{'file':templ_attr.cif 'save':aniso_betaij}]

save_

save_atom_site_aniso.beta_11_su

_definition.id '_atom_site_aniso.beta_11_su'
_alias.definition_id '_atom_site_aniso_beta_11_su'
_name.category_id atom_site_aniso
_name.object_id beta_11_su
_name.linked_item_id '_atom_site_aniso.beta_11'

_import.get
[{'file':templ_attr.cif 'save':aniso_betaij_su}]

save_

save_atom_site_aniso.beta_12

_definition.id '_atom_site_aniso.beta_12'
_alias.definition_id '_atom_site_aniso_beta_12'
_name.category_id atom_site_aniso
_name.object_id beta_12

_import.get [{'file':templ_attr.cif 'save':aniso_betaij}]

save_

save_atom_site_aniso.beta_12_su

_definition.id '_atom_site_aniso.beta_12_su'
_alias.definition_id '_atom_site_aniso_beta_12_su'
_name.category_id atom_site_aniso
_name.object_id beta_12_su
_name.linked_item_id '_atom_site_aniso.beta_12'

_import.get
[{'file':templ_attr.cif 'save':aniso_betaij_su}]

save_

save_atom_site_aniso.beta_13

_definition.id '_atom_site_aniso.beta_13'
_alias.definition_id '_atom_site_aniso_beta_13'
_name.category_id atom_site_aniso
_name.object_id beta_13

_import.get [{'file':templ_attr.cif 'save':aniso_betaij}]

save_

save_atom_site_aniso.beta_13_su

_definition.id '_atom_site_aniso.beta_13_su'
_alias.definition_id '_atom_site_aniso_beta_13_su'
_name.category_id atom_site_aniso
_name.object_id beta_13_su
_name.linked_item_id '_atom_site_aniso.beta_13'

_import.get
[{'file':templ_attr.cif 'save':aniso_betaij_su}]

save_

save_atom_site_aniso.beta_22

_definition.id '_atom_site_aniso.beta_22'
_alias.definition_id '_atom_site_aniso_beta_22'
_name.category_id atom_site_aniso
_name.object_id beta_22

_import.get [{'file':templ_attr.cif 'save':aniso_betaij}]

save_

save_atom_site_aniso.beta_22_su

_definition.id '_atom_site_aniso.beta_22_su'
_alias.definition_id '_atom_site_aniso_beta_22_su'
_name.category_id atom_site_aniso
_name.object_id beta_22_su
_name.linked_item_id '_atom_site_aniso.beta_22'

_import.get
[{'file':templ_attr.cif 'save':aniso_betaij_su}]

save_

save_atom_site_aniso.beta_23

_definition.id '_atom_site_aniso.beta_23'
_alias.definition_id '_atom_site_aniso_beta_23'
_name.category_id atom_site_aniso
_name.object_id beta_23

_import.get [{'file':templ_attr.cif 'save':aniso_betaij}]

save_

save_atom_site_aniso.beta_23_su

_definition.id '_atom_site_aniso.beta_23_su'
_alias.definition_id '_atom_site_aniso_beta_23_su'
_name.category_id atom_site_aniso
_name.object_id beta_23_su
_name.linked_item_id '_atom_site_aniso.beta_23'

_import.get
[{'file':templ_attr.cif 'save':aniso_betaij_su}]

save_

save_atom_site_aniso.beta_33

_definition.id '_atom_site_aniso.beta_33'
_alias.definition_id '_atom_site_aniso_beta_33'
_name.category_id atom_site_aniso
_name.object_id beta_33

_import.get [{'file':templ_attr.cif 'save':aniso_betaij}]

save_

save_atom_site_aniso.beta_33_su

_definition.id '_atom_site_aniso.beta_33_su'
_alias.definition_id '_atom_site_aniso_beta_33_su'
_name.category_id atom_site_aniso
_name.object_id beta_33_su
_name.linked_item_id '_atom_site_aniso.beta_33'

_import.get
[{'file':templ_attr.cif 'save':aniso_betaij_su}]

save_

save_atom_site_aniso.label

_definition.id '_atom_site_aniso.label'
Expand Down Expand Up @@ -22216,6 +22280,117 @@ save_atom_site_aniso.matrix_b_su

save_

save_atom_site_aniso.matrix_beta

_definition.id '_atom_site_aniso.matrix_beta'
_alias.definition_id '_atom_site.tensor_beta'
_definition.update 2023-06-16
_description.text
;
The symmetric anisotropic atomic displacement parameter (ADP) matrix, β,
which appears in a structure factor expression.

The contribution of the ADPs to the calculation of the structure factor is
given as:

T = exp(-1 * Sum(Sum(β^ij^ * h~i~ * h~j~, j=1:3), i=1:3))

where β^ij^ are the matrix elements, and h~m~ are the Miller indices.

The ADP matrix β, is related to the ADP matrices U and B, as follows:

|a~1~* 0 0 | |t^11^ t^12^ t^13^| |a~1~* 0 0 |
β = C * | 0 a~2~* 0 | * |t^12^ t^22^ t^23^| * | 0 a~2~* 0 |
| 0 0 a~3~*| |t^13^ t^23^ t^33^| | 0 0 a~3~*|

where C is a constant (2 * π^2^ for U, and 0.25 for B), a~i~* is the
length of the respective reciprocal unit cell vector, and t represents
the individual anisotropic values, U^ij^ or B^ij^.
;
_name.category_id atom_site_aniso
_name.object_id matrix_beta
_type.purpose Measurand
_type.source Derived
_type.container Matrix
_type.dimension '[3,3]'
_type.contents Real
_units.code none
_method.purpose Evaluation
_method.expression
;
With a as atom_site_aniso

label = a.label

If (a.ADP_type == 'betaani')
{
a.matrix_beta = [[ a.beta_11, a.beta_12, a.beta_13 ],
[ a.beta_12, a.beta_22, a.beta_23 ],
[ a.beta_13, a.beta_23, a.beta_33 ]]
}
Else
{
If (a.ADP_type == 'Uani')
{
UIJ = b.matrix_U
}
Else If (a.ADP_type == 'Bani')
{
UIJ = b.matrix_B / (8 * Pi**2)
}
Else {
If (a.ADP_type == 'Uiso')
{
Loop b as atom_site
{
If(label == b.label)
{
U = b.U_iso_or_equiv
Break
}
}
}
Else If (a.ADP_type == 'Biso')
{
Loop b as atom_site
{
If(label == b.label)
{
U = b.B_iso_or_equiv / (8 * Pi**2)
Break
}
}
}
UIJ = U * _cell.convert_Uiso_to_Uij
}
CUB = _cell.convert_Uij_to_betaij
a.matrix_beta = CUB * UIJ * CUB
}
;

save_

save_atom_site_aniso.matrix_beta_su

_definition.id '_atom_site_aniso.matrix_beta_su'
_alias.definition_id '_atom_site.tensor_beta_su'
_definition.update 2023-02-15
_description.text
;
Standard uncertainty of _atom_site_aniso.matrix_beta.
;
_name.category_id atom_site_aniso
_name.object_id matrix_beta_su
_name.linked_item_id '_atom_site_aniso.matrix_beta'
_type.purpose SU
_type.source Derived
_type.container Matrix
_type.dimension '[3,3]'
_type.contents Real
_units.code none

save_

save_atom_site_aniso.matrix_u

_definition.id '_atom_site_aniso.matrix_U'
Expand Down Expand Up @@ -27709,6 +27884,10 @@ save_
Redefined _exptl_absorpt.coefficient_mu as a derived measurand item.
Added the _exptl_absorpt.coefficient_mu_su data item.

Renamed _atom_site.tensor_beta to _atom_site_aniso.matrix_beta and
updated the associated dREL evaluation methods. The old data name was
retained as an alias. Added the _atom_site_aniso.beta_* data items.

Reverted _atom_type_scat.versus_stol_list to a text-type to regain
compatibility with DDL1 dictionary.

Expand Down
Loading

0 comments on commit eb0726f

Please sign in to comment.