code: def coupling_constant(self, specie):
          
          planks_constant=FloatWithUnit(6.62607004E-34, "m^2 kg s^-1")
          Vzz=FloatWithUnit(self.V_zz, "V ang^-2")
          e=FloatWithUnit(-1.60217662E-19, "C")
  
          # Convert from string to Specie object
          if isinstance(specie, str):
              # isotope was provided in string format
              if len(specie.split("-")) > 1:
                  isotope=str(specie)
                  specie=Specie(specie.split("-")[0])
                  Q=specie.get_nmr_quadrupole_moment(isotope)
              else:
                  specie=Specie(specie)
                  Q=specie.get_nmr_quadrupole_moment()
          elif isinstance(specie, Site):
              specie=specie.specie
              Q=specie.get_nmr_quadrupole_moment()
          elif isinstance(specie, Specie):
              Q=specie.get_nmr_quadrupole_moment()
          else:
              raise ValueError("Invalid speciie provided for quadrupolar coupling constant calcuations")
  
          return (e * Q * Vzz / planks_constant).to("MHz")
docs: Computes the couplling constant C_q as defined in:
              Wasylishen R E, Ashbrook S E, Wimperis S. NMR of quadrupolar nuclei
              in solid materials[M]. John Wiley & Sons, 2012. (Chapter 3.2)
  
          C_q for a specific atom type for this electric field tensor:
                  C_q=e*Q*V_zz/h
              h: planck's constant
              Q: nuclear electric quadrupole moment in mb (millibarn
              e: elementary proton charge
  
          Args:
              specie: flexible input to specify the species at this site.
                      Can take a isotope or element string, Specie object,
                      or Site object
  
          Return:
  
              the coupling constant as a FloatWithUnit in MHz