class_docstr: Data structure that contains local information about density profiles.
  Data structure used as a umbrella class for density profiles and the
  derivative of the potential w.r.t. density profiles.
  
  Examples
  --------
  >>> import torch
  >>> from deepchem.utils.dft_utils import ValGrad
  >>> dens = torch.ones(1)
  >>> grad = torch.zeros(1)
  >>> lapl = torch.ones(1)
  >>> kin = torch.ones(1)
  >>> vg = ValGrad(value=dens, grad=grad, lapl=lapl, kin=kin)
  >>> vg + vg
  ValGrad(value=tensor([2.]), grad=tensor([0.]), lapl=tensor([2.]), kin=tensor([2.]))
  >>> vg * 5
  ValGrad(value=tensor([5.]), grad=tensor([0.]), lapl=tensor([5.]), kin=tensor([5.]))
docstr: Multiply the ValGrad object with a scalar.
docstr_tok: ["Multiply","the","ValGrad","object","with","a","scalar","."]
code: def __mul__(self, f: Union[float, int, torch.Tensor]):
      """Multiply the ValGrad object with a scalar."""
      if isinstance(f, torch.Tensor):
          assert (
              f.numel() == 1
          ), "ValGrad multiplication with tensor can only be done with 1-element tensor"
  
      return ValGrad(
          value=self.value * f,
          grad=self.grad * f if self.grad is not None else None,
          lapl=self.lapl * f if self.lapl is not None else None,
          kin=self.kin * f if self.kin is not None else None,
      )
  
imports: from typing import Union, TypeVar, Generic, Optional, Callable, List, Dict
  from dataclasses import dataclass
  import torch
  import numpy
  from deepchem.utils import gaussian_integral
label_desc: Use image node_id 3 for calling the ValGrad obj's underlying member method code with example usage: obj.__mul__(f) and returns: ValGrad