I am not sure if there is a simple and definite answer to your questions, as the description "best" is totally subjective. For example I use Abaqus since it provides me with the capability of creating a User MATerial (UMAT) subroutine that can implement any model as well as I can perform variations regarding the constitutive equations (a tutorial on how to write a UMAT or a VUMAT is available here: https://imechanica.org/files/Writing%20a%20UMAT.pdf ). As far as I am concerned ANSYS has built-in material models developed by Auricchio et al. (you can find more information here: https://www.sharcnet.ca/Software/Ansys/16.2.3/en-us/help/ans_mat/smas.html ). Finally, as far as I know, latest Nonlinear Structural Materials Module of COMSOL offers the capability to use the models of Lagoudas and Souza–Auricchio.
I am not sure if there is a simple and definite answer to your questions, as the description "best" is totally subjective. For example I use Abaqus since it provides me with the capability of creating a User MATerial (UMAT) subroutine that can implement any model as well as I can perform variations regarding the constitutive equations (a tutorial on how to write a UMAT or a VUMAT is available here: https://imechanica.org/files/Writing%20a%20UMAT.pdf ). As far as I am concerned ANSYS has built-in material models developed by Auricchio et al. (you can find more information here: https://www.sharcnet.ca/Software/Ansys/16.2.3/en-us/help/ans_mat/smas.html ). Finally, as far as I know, latest Nonlinear Structural Materials Module of COMSOL offers the capability to use the models of Lagoudas and Souza–Auricchio.
I have been used ABAQUS for my master thesis. In 6.17 or newer versions of ABAQUS you don't need to write subroutine (fiqure) . I'm abaqus and Ansys user and i prefer use abaqus for usual simulations such as bending or twisting problems and use ansys for fatigue or fracture of SMAs.
Just for balance MSC Nastran and Marc have specific shape memory alloy material definitions which mean you don't need to define your own UMAT's. I can't claim which is best.
If you use ansys, the equivalent for writing user subroutines in abaqus (Fortran) is Ansys mechanical APDL (ansys parametric design language) were you can skript custom material behavior as well
I guess the conclusion of this question is that everyone has their own favourite codes. My advice is to look at the capabilities you need and compare with the software capabilities, including looking at examples if provided. Think of the following.
1) can it do everything I need?
2) how easy is it to use?
3) Are there other capabilities I might want longer term?
For the coupling of two or more physics go for Comsol. If u have predefiend physics in Abaqus/ Ansys then go for them because they have much better accuracy than Comsol.