Source code for symplyphysics.laws.electricity.vector.electric_dipole_moment_is_charge_times_displacement
"""
Electric dipole moment is charge times displacement
===================================================
The vector of electric dipole moment is a vector whose magnitude describes the
:doc:`electric dipole moment <laws.electricity.electric_dipole_moment_is_charge_times_distance>`
of the system. It is collinear to the vector connecting the two point charges.
**Conditions:**
#. The charges must be equal by magnitude and have opposite signs.
**Links:**
#. `Wikipedia <https://en.wikipedia.org/wiki/Electric_dipole_moment#Elementary_definition>`__.
"""
from symplyphysics import (
units,
validate_input,
validate_output,
Quantity,
scale_vector,
QuantityVector,
Vector,
symbols,
)
charge = symbols.charge
"""
Magnitude of the electric :symbols:`charge` of the point charges.
"""
[docs]
def dipole_moment_law(displacement_vector_: Vector) -> Vector:
r"""
Vector of electric dipole moment via displacement vector.
Law:
:code:`p = q * d`
Latex:
.. math::
\vec p = q \vec d
:param displacement\_vector\_: vector pointing from the negative charge to the positive charge
Symbol: :code:`d`
Latex: :math:`\vec d`
Dimension: *length*
:return: vector of electric dipole moment
Symbol: :code:`p`
Latex: :math:`\vec p`
Dimension: *charge* * *length*
"""
return scale_vector(charge, displacement_vector_)
@validate_input(charge_=charge, displacement_vector_=units.length)
@validate_output(units.charge * units.length)
def calculate_dipole_moment(charge_: Quantity,
displacement_vector_: QuantityVector) -> QuantityVector:
result_vector = dipole_moment_law(displacement_vector_.to_base_vector())
return QuantityVector.from_base_vector(result_vector, subs={charge: charge_})