function get_helement_tJ_ex_mat(nI, ic, ex, tpar) result(hel)
integer, intent(in) :: nI(nel), ic, ex(2, ic)
logical, intent(in) :: tpar
HElement_t(dp) :: hel
if (ic == 0) then
! is the diagonal element the same as in the pure
! heisenberg model? yes or?
hel = get_diag_helement_heisenberg(nI)
else if (ic == 1) then
! the single excitation is the same as in the hubbard model
hel = get_offdiag_helement_tJ(nI, ex(:, 1), tpar)
else if (ic == 2) then
hel = get_offdiag_helement_heisenberg(nI, ex, tpar)
else
hel = h_cast(0.0_dp)
end if
end function get_helement_tJ_ex_mat