multiply_hamil_and_vector_complex Subroutine

public subroutine multiply_hamil_and_vector_complex(this, input_vector, output_vector)

Arguments

Type IntentOptional Attributes Name
type(HamiltonianCalcType), intent(inout) :: this
complex(kind=dp), intent(in) :: input_vector(:)
complex(kind=dp), intent(out) :: output_vector(:)

Contents


Source Code

    subroutine multiply_hamil_and_vector_complex(this, input_vector, output_vector)
        type(HamiltonianCalcType), intent(inout) :: this
        complex(dp), intent(in) :: input_vector(:)
        complex(dp), intent(out) :: output_vector(:)

        associate(hamil_type => this%hamil_type)

            if (hamil_type == full_hamil_type) then
                call multiply_hamil_and_vector_full(this, input_vector, output_vector)
            else if (hamil_type == sparse_hamil_type) then
                call mult_hamil_vector_sparse(this, input_vector, output_vector)
            else if (hamil_type == parallel_sparse_hamil_type) then
                call mult_hamil_vector_par_sparse(this, input_vector, output_vector)
            else if (hamil_type == direct_ci_type) then
                call mult_hamil_vector_direct_ci(input_vector, output_vector)
            end if
        end associate
    end subroutine multiply_hamil_and_vector_complex