I'm working with an antiferromagnetic spin model on a bipartite lattice, which I am trying to analyze via Holstein-Primakoff spin-wave theory. Because the theory has two sublattices, there are naturally two boson flavors $a,b$. In Fourier space, I've found an exact form for the Hamiltonian in terms of the bosons:
$$\sum_{\vec{k}}\begin{pmatrix} a_{k}^{\dagger} && b_{k}^{\dagger} && a_{-k} && b_{-k} \end{pmatrix} \begin{pmatrix} c && w^{*} && 0 && x^{*}\\ w && c && x && 0\\ 0 && x^{*} && c && w^{*}\\ x && 0 && w && c \end{pmatrix} \begin{pmatrix} a_{k}\\ b_{k}\\ a_{-k}^{\dagger}\\ b_{-k}^{\dagger} \end{pmatrix} $$
I have exact expressions for the parameters $c, x$, and $w$, and they depend on $k$. The trouble is that I'm not aware of a simple way to implement a Bogoliubov transformation for Hamiltonians of this type - there are some papers on spin-wave theory which address similar problems, but the examples I have seen do not have the same structure of couplings, so those closed forms do not apply.
For my purposes, I don't need a closed form - just a numerical procedure for extracting the band structure. Is there such an approach, in general? Of course, I'm happy to get a closed form for the band structure, but all I want is a well-defined numerical procedure. The difficulty is that Bogoliubov transformations are non-unitary, so brute-forcing the relevant equations seems computationally expensive. Besides, it would be useful to know how to do this in general.