def compute_strain_components_from_dx(dudx, dvdx, dudy, dvdy):
    """
    Given a displacement tensor, compute the relevant parts of the strain and rotation tensors.
    Rot is the off-diagonal element of the rotation tensor
    Rot has native units radians/year. Here we return radians per 1000 yrs (easier to interpret numbers)
    http://www.engr.colostate.edu/~thompson/hPage/CourseMat/Tutorials/Solid_Mechanics/rotations.pdf

    :param dudx: displacement gradient
    :type dudx: float
    :param dvdx: displacement gradient
    :type dvdx: float
    :param dudy: displacement gradient
    :type dudy: float
    :param dvdy: displacement gradient
    :type dvdy: float
    :returns: strain and rotation components
    :rtype: list
    """
    exx = dudx;
    exy = (0.5 * (dvdx + dudy));
    eyy = dvdy;
    rot = (0.5 * (dvdx - dudy));
    return [exx, exy, eyy, rot];