Giter Club home page Giter Club logo

Comments (3)

ngraymon avatar ngraymon commented on July 16, 2024

Instead of looping

for order in range(1, max_order+1):

we have to loop over both dimensions (m,n)

for omega_term in master_omega.operator_list:
    specifier_string = f"m{omega_term.m}_n{omega_term.n}"

from termfactory.

ngraymon avatar ngraymon commented on July 16, 2024

The final structure is different than the original design.

compute_all_optimized_paths returns a dictionary of all optimized paths for proj^m_n
compute_m#_n#_optimized_paths returns a dictionary with 1 key, value pair where the value is a list of length 3

for example:

connected_opt_path_list = compute_m3_n0_fully_connected_optimized_paths(A, N, ansatz, truncation)
linked_opt_path_list = compute_m3_n0_linked_disconnected_optimized_paths(A, N, ansatz, truncation)
unlinked_opt_path_list = compute_m3_n0_unlinked_disconnected_optimized_paths(A, N, ansatz, truncation)

return_dict = {
    (3, 0): [connected_opt_path_list, linked_opt_path_list, unlinked_opt_path_list]
}

each compute_m#_n#_{term_type_name}_optimized_paths function returns the appropriate list filled with contracted expressions
for example:

def compute_m0_n0_fully_connected_optimized_paths(A, N, ansatz, truncation):
    """Calculate optimized einsum paths for the fully_connected terms."""

    fully_connected_opt_path_list = []

    if ansatz.ground_state:

        if truncation.at_least_linear:
            if truncation.singles:
                fully_connected_opt_path_list.append(oe.contract_expression((A, A, N), (A, A, N)))

        if truncation.at_least_quadratic:
            if truncation.singles:
                fully_connected_opt_path_list.extend([
                    oe.contract_expression((A, A, N, N), (A, A, N), (A, A, N)),
                    oe.contract_expression((A, A, N, N), (A, A, N), (A, A, N))
                ])
            if truncation.doubles:
                fully_connected_opt_path_list.append(oe.contract_expression((A, A, N, N), (A, A, N, N)))

        if truncation.at_least_cubic:
            if truncation.singles:
                fully_connected_opt_path_list.extend([
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N), (A, A, N)),
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N), (A, A, N)),
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N), (A, A, N)),
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N), (A, A, N)),
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N), (A, A, N)),
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N), (A, A, N))
                ])
            if truncation.doubles:
                fully_connected_opt_path_list.extend([
                    oe.contract_expression((A, A, N, N, N), (A, A, N), (A, A, N, N)),
                    oe.contract_expression((A, A, N, N, N), (A, A, N, N), (A, A, N))
                ])
            if truncation.triples:
                fully_connected_opt_path_list.append(oe.contract_expression((A, A, N, N, N), (A, A, N, N, N)))
    else:
        raise Exception('Hot Band amplitudes not implemented properly and have not been theoretically verified!')

    return fully_connected_opt_path_list

from termfactory.

ngraymon avatar ngraymon commented on July 16, 2024

I forgot to include the actual einsum operation spec in the contraction expressions!
Need to fix this.

from termfactory.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.