<commit_before>//
// Created by david on 2018-07-04.
//

#pragma once

#include "class_mpo_parameters.h"
#include <any>
#include <config/enums.h>
#include <map>
#include <memory>
#include <Eigen/Core>
#include <unsupported/Eigen/CXX11/Tensor>


namespace h5pp {
    class File;
}

class class_mpo_site {
    public:
    using Scalar   = std::complex<double>;
    using TableMap = std::map<std::string, std::any>;
    const ModelType model_type;
    bool            all_mpo_parameters_have_been_set = false;

    protected:
    // Common parameters
    double alpha      = 0;     /*!< Damping factor [0,1] on couplings, std::pow(J_rnd + J_ptb,1-alpha)  */
    double beta       = 0;     /*!< Damping factor [0,1] on fields, std::pow(h_rnd + h_ptb,1-alpha)  */
    double e_reduced  = 0;     /*!< "Reduced" energy offset for this mpo (to make energy-reduced MPO views) */
    double psfactor   = 0;     /*!< Parity sector separation factor */
    bool   parity_sep = false; /*!< Parity sector separation on/off */

    Eigen::array<long, 4>                   extent4;  /*!< Extent of pauli matrices in a rank-4 tensor */
    Eigen::array<long, 2>                   extent2;  /*!< Extent of pauli matrices in a rank-2 tensor */
    std::optional<size_t>                   position; /*!< Position on a finite chain */
    Eigen::Tensor<Scalar, 4>                mpo_internal;
    std::optional<Eigen::Tensor<Scalar, 4>> mpo_squared = std::nullopt;

    public:<commit_msg>Default initialize extents<commit_after>//
// Created by david on 2018-07-04.
//

#pragma once

#include "class_mpo_parameters.h"
#include <any>
#include <config/enums.h>
#include <map>
#include <memory>
#include <Eigen/Core>
#include <unsupported/Eigen/CXX11/Tensor>


namespace h5pp {
    class File;
}

class class_mpo_site {
    public:
    using Scalar   = std::complex<double>;
    using TableMap = std::map<std::string, std::any>;
    const ModelType model_type;
    bool            all_mpo_parameters_have_been_set = false;

    protected:
    // Common parameters
    double alpha      = 0;     /*!< Damping factor [0,1] on couplings, std::pow(J_rnd + J_ptb,1-alpha)  */
    double beta       = 0;     /*!< Damping factor [0,1] on fields, std::pow(h_rnd + h_ptb,1-alpha)  */
    double e_reduced  = 0;     /*!< "Reduced" energy offset for this mpo (to make energy-reduced MPO views) */
    double psfactor   = 0;     /*!< Parity sector separation factor */
    bool   parity_sep = false; /*!< Parity sector separation on/off */

    Eigen::array<long, 4>                   extent4{};  /*!< Extent of pauli matrices in a rank-4 tensor */
    Eigen::array<long, 2>                   extent2{};  /*!< Extent of pauli matrices in a rank-2 tensor */
    std::optional<size_t>                   position; /*!< Position on a finite chain */
    Eigen::Tensor<Scalar, 4>                mpo_internal;
    std::optional<Eigen::Tensor<Scalar, 4>> mpo_squared = std::nullopt;

    public:
{'fraction_non_alphanumeric': 0.13274635963427023, 'fraction_numerical': 0.019641043007111413, 'mean_word_length': 2.6424167694204685, 'pattern_counts': {'":': 0, '<': 47, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2349438', 'n_tokens_mistral': 1034, 'n_tokens_neox': 959, 'n_words': 261}