| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(HamiltonianCalcType), | intent(inout) | :: | this | |||
| complex(kind=dp), | intent(in) | :: | input_vector(:) | |||
| complex(kind=dp), | intent(out) | :: | output_vector(:) |
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