Algorithm 3R Recursive evaluation of adjoints ω

From: Performant implementation of the atomic cluster expansion (PACE) and application to copper and silicon

1:

ωiv = 0

2:

for\({\bf{v}}\equiv {\bf{v}}^{\prime} \cup {\bf{v}}^{\prime\prime} \leftarrow {\mathcal{G}}\), in reverse order do

3:

\({\theta }_{{\bf{v}}}={\sum }_{p}\partial {\mathcal{F}}/\partial {\varphi }_{i}^{(p)}{\tilde{{\bf{c}}}}_{{\mu }_{i}{\bf{v}}}^{(p)}\)

4:

 ωiv += θv

5:

\({\omega }_{i{\bf{v}}^{\prime} }+\!={\omega }_{i{\bf{v}}}{{\bf{A}}}_{i{\bf{v}}^{\prime\prime} }\)

6:

\({\omega }_{i{\bf{v}}^{\prime\prime} }+\!={\omega }_{i{\bf{v}}}{{\bf{A}}}_{i{\bf{v}}^{\prime} }\)

7:

end for