Interaction with CLEF expressionsΒΆ

  • The containers and their view classes can be used with the [triqs/clef] Clef: Compile-time lazy expressions and functions library:
  • Using the CLEF library offers a quick and efficient way to fill an array with multiple advantages:
    • It is simpler and more readeable than a series of for loops.
    • It is usually more optimal since the for loops are automatically written in the TraversalOrder of the array.
  • Example:
#include <triqs/arrays.hpp>
using triqs::arrays::array;
using triqs::clef::placeholder;
int main() {
  placeholder<0> i_;
  placeholder<1> j_;
  array<double, 2> A(2, 2), B(2, 2);

  A(i_, j_) << i_ + 2 * j_;
  B(i_, j_) << A(j_, i_) / 2;

  std::cout << "A = " << A << std::endl;
  std::cout << "B = " << B << std::endl;
}
---------- Result is -------
A = 
[[0,2]
 [1,3]]
B = 
[[0,0.5]
 [1,1.5]]

Note

The syntax uses a <<, not = since the array is not assigned to an expression but filled by the evaluation thereof.