Ejemplo n.º 1
0
def band_velocity(p1, p2):
    # Note :This function is only meant to be called once to initialize the vel vectors

    p_x, p_y = get_p_x_and_p_y(p1, p2)

    p = af.sqrt(p_x**2. + p_y**2.)
    p_hat = [p_x / (p + 1e-20), p_y / (p + 1e-20)]

    if (fermi_surface_shape == 'circle'):

        v_f_hat = p_hat

    elif (fermi_surface_shape == 'hexagon'):

        # Need to get theta for normal_to_hexagon_unit_vec()
        if (p_space_grid == 'cartesian'):
            p_x_local = p1
            p_y_local = p2

            theta = af.atan(p_y_local / p_x_local)

        elif (p_space_grid == 'polar2D'):
            # In polar2D coordinates, p1 = radius and p2 = theta
            r = p1
            theta = p2
        else:
            raise NotImplementedError(
                'Unsupported coordinate system in p_space')

        v_f_hat = normal_to_hexagon_unit_vec(theta)

    # Quadratic dispersion
    m = effective_mass(p1, p2)
    v_f = p / m

    if (dispersion == 'linear' or zero_temperature):

        v_f = fermi_velocity

    upper_band_velocity = [v_f * v_f_hat[0], v_f * v_f_hat[1]]

    return (upper_band_velocity)
Ejemplo n.º 2
0
def get_theta(q1,
              q2,
              boundary,
              q1_start_local_left=None,
              q2_start_local_bottom=None):

    dq1 = domain.dq1
    dq2 = domain.dq2

    q1_tmp = q1.copy()
    q2_tmp = q2.copy()

    # Assuming q1, q2 are at zone centers. Need to calculate thetas using the face-centers on which the boundary lies
    if (boundary == "left"):
        q1_tmp = q1_tmp - 0.5 * dq1
        dq1 = 0

    if (boundary == "right"):
        q1_tmp = q1_tmp + 0.5 * dq1
        dq1 = 0

    if (boundary == "top"):
        q2_tmp = q2_tmp + 0.5 * dq2
        dq2 = 0

    if (boundary == "bottom"):
        q2_tmp = q2_tmp - 0.5 * dq2
        dq2 = 0

    [[dx_dq1, dx_dq2],
     [dy_dq1, dy_dq2]] = jacobian_dx_dq(q1_tmp, q2_tmp, q1_start_local_left,
                                        q2_start_local_bottom)

    dy = dy_dq1 * dq1 + dy_dq2 * dq2
    dx = dx_dq1 * dq1 + dx_dq2 * dq2

    dy_dx = dy / dx

    return (af.atan(dy_dx))
Ejemplo n.º 3
0
def initialize_f(q1, q2, p1, p2, p3, params):

    PETSc.Sys.Print("Initializing f")
    k = params.boltzmann_constant

    params.mu = 0. * q1 + params.initial_mu
    params.T = 0. * q1 + params.initial_temperature
    params.vel_drift_x = 0. * params.vel_drift_x_in + 0. * q1
    params.vel_drift_y = 0. * q1

    print(params.vel_drift_x)
    params.mu_ee = params.mu.copy()
    params.T_ee = params.T.copy()

    params.p_x, params.p_y = params.get_p_x_and_p_y(p1, p2)
    params.E_band = params.band_energy(p1, p2)
    params.vel_band = params.band_velocity(p1, p2)

    # Evaluating velocity space resolution for each species:
    dp1 = []
    dp2 = []
    dp3 = []
    N_p1 = domain.N_p1
    N_p2 = domain.N_p2
    N_p3 = domain.N_p3
    p1_start = domain.p1_start
    p1_end = domain.p1_end
    p2_start = domain.p2_start
    p2_end = domain.p2_end
    p3_start = domain.p3_start
    p3_end = domain.p3_end

    N_species = len(params.mass)
    for i in range(N_species):
        dp1.append((p1_end[i] - p1_start[i]) / N_p1)
        dp2.append((p2_end[i] - p2_start[i]) / N_p2)
        dp3.append((p3_end[i] - p3_start[i]) / N_p3)

    theta = af.atan(params.p_y / params.p_x)
    p_f = params.fermi_momentum_magnitude(theta)

    if (params.p_space_grid == 'cartesian'):
        dp_x = dp1[0]
        dp_y = dp2[0]
        dp_z = dp3[0]
        params.integral_measure = \
          (4./(2.*np.pi*params.h_bar)**2) * dp_z * dp_y * dp_x

    elif (params.p_space_grid == 'polar2D'):
        # In polar2D coordinates, p1 = radius and p2 = theta
        # Integral : \int delta(r - r_F) F(r, theta) r dr dtheta
        r = p1
        theta = p2
        dp_r = dp1[0]
        dp_theta = dp2[0]

        if (params.zero_temperature):
            # Assumption : F(r, theta) = delta(r-r_F)*F(theta)
            params.integral_measure = \
              (4./(2.*np.pi*params.h_bar)**2) * p_f * dp_theta

        else:
            params.integral_measure = \
              (4./(2.*np.pi*params.h_bar)**2) * r * dp_r * dp_theta

    else:
        raise NotImplementedError('Unsupported coordinate system in p_space')

    f = (1. / (af.exp(
        (params.E_band - params.vel_drift_x * params.p_x -
         params.vel_drift_y * params.p_y - params.mu) / (k * params.T)) + 1.))

    af.eval(f)
    return (f)
Ejemplo n.º 4
0
def initialize_f(q1, q2, p1, p2, p3, params):

    PETSc.Sys.Print("Initializing f")
    k = params.boltzmann_constant

    params.mu = 0. * q1 + params.initial_mu
    params.T = 0. * q1 + params.initial_temperature
    params.vel_drift_x = 0. * q1
    params.vel_drift_y = 0. * q1

    params.mu_ee = params.mu.copy()
    params.T_ee = params.T.copy()
    params.vel_drift_x = 0. * q1 + 0e-3
    params.vel_drift_y = 0. * q1 + 0e-3
    params.j_x = 0. * q1
    params.j_y = 0. * q1

    params.p_x, params.p_y = params.get_p_x_and_p_y(p1, p2)
    params.E_band = params.band_energy(p1, p2)
    params.vel_band = params.band_velocity(p1, p2)

    # TODO: Injecting get_cartesian_coords into params to avoid circular dependency
    params.get_cartesian_coords = coords.get_cartesian_coords

    # Load shift indices for all 4 boundaries into params. Required to perform
    # mirroring operations along boundaries at arbitrary angles.
    params.shift_indices_left, params.shift_indices_right, \
    params.shift_indices_bottom, params.shift_indices_top = \
            compute_shift_indices(q1, q2, p1, p2, p3, params)

    params.x, params.y = coords.get_cartesian_coords(
        q1,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    # TODO : Testing : Dump left, bottom, right, top faces also
    d_q1 = (q1[0, 0, 1, 0] - q1[0, 0, 0, 0]).scalar()
    d_q2 = (q2[0, 0, 0, 1] - q2[0, 0, 0, 0]).scalar()

    q1_left_faces = q1 - 0.5 * d_q1
    q2_bottom_faces = q2 - 0.5 * d_q2

    q1_right_faces = q1 + 0.5 * d_q1
    q2_top_faces = q2 + 0.5 * d_q2

    params.x_top_center, params.y_top_center = coords.get_cartesian_coords(
        q1,
        q2_top_faces,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    params.x_right_center, params.y_right_center = coords.get_cartesian_coords(
        q1_right_faces,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    params.x_bottom_center, params.y_bottom_center = coords.get_cartesian_coords(
        q1,
        q2_bottom_faces,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    params.x_left_center, params.y_left_center = coords.get_cartesian_coords(
        q1_left_faces,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    params.q1 = q1
    params.q2 = q2
    [[params.dx_dq1, params.dx_dq2], [params.dy_dq1, params.dy_dq2]
     ] = jacobian_dx_dq(q1,
                        q2,
                        q1_start_local_left=params.q1_start_local_left,
                        q2_start_local_bottom=params.q2_start_local_bottom)
    [[params.dq1_dx, params.dq1_dy], [params.dq2_dx, params.dq2_dy]
     ] = jacobian_dq_dx(q1,
                        q2,
                        q1_start_local_left=params.q1_start_local_left,
                        q2_start_local_bottom=params.q2_start_local_bottom)
    params.sqrt_det_g = sqrt_det_g(
        q1,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    # Calculation of integral measure
    # Evaluating velocity space resolution for each species:
    dp1 = []
    dp2 = []
    dp3 = []
    N_p1 = domain.N_p1
    N_p2 = domain.N_p2
    N_p3 = domain.N_p3
    p1_start = domain.p1_start
    p1_end = domain.p1_end
    p2_start = domain.p2_start
    p2_end = domain.p2_end
    p3_start = domain.p3_start
    p3_end = domain.p3_end

    N_species = len(params.mass)
    for i in range(N_species):
        dp1.append((p1_end[i] - p1_start[i]) / N_p1)
        dp2.append((p2_end[i] - p2_start[i]) / N_p2)
        dp3.append((p3_end[i] - p3_start[i]) / N_p3)

    theta = af.atan(params.p_y / params.p_x)
    p_f = params.fermi_momentum_magnitude(theta)

    if (params.p_space_grid == 'cartesian'):
        dp_x = dp1[0]
        dp_y = dp2[0]
        dp_z = dp3[0]
        params.integral_measure = \
          (4./(2.*np.pi*params.h_bar)**2) * dp_z * dp_y * dp_x

    elif (params.p_space_grid == 'polar2D'):
        # In polar2D coordinates, p1 = radius and p2 = theta
        # Integral : \int delta(r - r_F) F(r, theta) r dr dtheta
        r = p1
        theta = p2
        dp_r = dp1[0]
        dp_theta = dp2[0]

        if (params.zero_temperature):
            # Assumption : F(r, theta) = delta(r-r_F)*F(theta)
            params.integral_measure = \
              (4./(2.*np.pi*params.h_bar)**2) * p_f * dp_theta

        else:
            params.integral_measure = \
              (4./(2.*np.pi*params.h_bar)**2) * r * dp_r * dp_theta

    else:
        raise NotImplementedError('Unsupported coordinate system in p_space')


#    # Initialize to zero
#    f = 0*q1*p1

    f = (1. / (af.exp(
        (params.E_band - params.vel_drift_x * params.p_x -
         params.vel_drift_y * params.p_y - params.mu) / (k * params.T)) + 1.))
    if (params.zero_temperature):
        f = f - 0.5

    af.eval(f)
    return (f)
Ejemplo n.º 5
0
def simple_arith(verbose = False):
    display_func = _util.display_func(verbose)
    print_func   = _util.print_func(verbose)

    a = af.randu(3,3,dtype=af.Dtype.u32)
    b = af.constant(4, 3, 3, dtype=af.Dtype.u32)
    display_func(a)
    display_func(b)

    c = a + b
    d = a
    d += b

    display_func(c)
    display_func(d)
    display_func(a + 2)
    display_func(3 + a)


    c = a - b
    d = a
    d -= b

    display_func(c)
    display_func(d)
    display_func(a - 2)
    display_func(3 - a)

    c = a * b
    d = a
    d *= b

    display_func(c * 2)
    display_func(3 * d)
    display_func(a * 2)
    display_func(3 * a)

    c = a / b
    d = a
    d /= b

    display_func(c / 2.0)
    display_func(3.0 / d)
    display_func(a / 2)
    display_func(3 / a)

    c = a % b
    d = a
    d %= b

    display_func(c % 2.0)
    display_func(3.0 % d)
    display_func(a % 2)
    display_func(3 % a)

    c = a ** b
    d = a
    d **= b

    display_func(c ** 2.0)
    display_func(3.0 ** d)
    display_func(a ** 2)
    display_func(3 ** a)

    display_func(a < b)
    display_func(a < 0.5)
    display_func(0.5 < a)

    display_func(a <= b)
    display_func(a <= 0.5)
    display_func(0.5 <= a)

    display_func(a > b)
    display_func(a > 0.5)
    display_func(0.5 > a)

    display_func(a >= b)
    display_func(a >= 0.5)
    display_func(0.5 >= a)

    display_func(a != b)
    display_func(a != 0.5)
    display_func(0.5 != a)

    display_func(a == b)
    display_func(a == 0.5)
    display_func(0.5 == a)

    display_func(a & b)
    display_func(a & 2)
    c = a
    c &= 2
    display_func(c)

    display_func(a | b)
    display_func(a | 2)
    c = a
    c |= 2
    display_func(c)

    display_func(a >> b)
    display_func(a >> 2)
    c = a
    c >>= 2
    display_func(c)

    display_func(a << b)
    display_func(a << 2)
    c = a
    c <<= 2
    display_func(c)

    display_func(-a)
    display_func(+a)
    display_func(~a)
    display_func(a)

    display_func(af.cast(a, af.Dtype.c32))
    display_func(af.maxof(a,b))
    display_func(af.minof(a,b))
    display_func(af.rem(a,b))

    a = af.randu(3,3) - 0.5
    b = af.randu(3,3) - 0.5

    display_func(af.abs(a))
    display_func(af.arg(a))
    display_func(af.sign(a))
    display_func(af.round(a))
    display_func(af.trunc(a))
    display_func(af.floor(a))
    display_func(af.ceil(a))
    display_func(af.hypot(a, b))
    display_func(af.sin(a))
    display_func(af.cos(a))
    display_func(af.tan(a))
    display_func(af.asin(a))
    display_func(af.acos(a))
    display_func(af.atan(a))
    display_func(af.atan2(a, b))

    c = af.cplx(a)
    d = af.cplx(a,b)
    display_func(c)
    display_func(d)
    display_func(af.real(d))
    display_func(af.imag(d))
    display_func(af.conjg(d))

    display_func(af.sinh(a))
    display_func(af.cosh(a))
    display_func(af.tanh(a))
    display_func(af.asinh(a))
    display_func(af.acosh(a))
    display_func(af.atanh(a))

    a = af.abs(a)
    b = af.abs(b)

    display_func(af.root(a, b))
    display_func(af.pow(a, b))
    display_func(af.pow2(a))
    display_func(af.exp(a))
    display_func(af.expm1(a))
    display_func(af.erf(a))
    display_func(af.erfc(a))
    display_func(af.log(a))
    display_func(af.log1p(a))
    display_func(af.log10(a))
    display_func(af.log2(a))
    display_func(af.sqrt(a))
    display_func(af.cbrt(a))

    a = af.round(5 * af.randu(3,3) - 1)
    b = af.round(5 * af.randu(3,3) - 1)

    display_func(af.factorial(a))
    display_func(af.tgamma(a))
    display_func(af.lgamma(a))
    display_func(af.iszero(a))
    display_func(af.isinf(a/b))
    display_func(af.isnan(a/a))

    a = af.randu(5, 1)
    b = af.randu(1, 5)
    c = af.broadcast(lambda x,y: x+y, a, b)
    display_func(a)
    display_func(b)
    display_func(c)

    @af.broadcast
    def test_add(aa, bb):
        return aa + bb

    display_func(test_add(a, b))
Ejemplo n.º 6
0
def initialize_f(q1, q2, p1, p2, p3, params):

    PETSc.Sys.Print("Initializing f")
    k = params.boltzmann_constant

    params.mu = 0. * q1 + params.initial_mu
    params.T = 0. * q1 + params.initial_temperature
    params.vel_drift_x = 0. * q1
    params.vel_drift_y = 0. * q1

    params.mu_ee = params.mu.copy()
    params.T_ee = params.T.copy()
    params.vel_drift_x = 0. * q1 + 0e-3
    params.vel_drift_y = 0. * q1 + 0e-3
    params.j_x = 0. * q1
    params.j_y = 0. * q1

    params.p_x, params.p_y = params.get_p_x_and_p_y(p1, p2)
    params.E_band = params.band_energy(p1, p2)
    params.vel_band = params.band_velocity(p1, p2)

    # TODO: Injecting get_cartesian_coords into params to avoid circular dependency
    params.get_cartesian_coords = coords.get_cartesian_coords

    # Load shift indices for all 4 boundaries into params. Required to perform
    # mirroring operations along boundaries at arbitrary angles.
    params.shift_indices_left, params.shift_indices_right, \
    params.shift_indices_bottom, params.shift_indices_top = \
            compute_shift_indices(q1, q2, p1, p2, p3, params)

    params.x, params.y = coords.get_cartesian_coords(
        q1,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    # TODO : Testing : Dump left, bottom, right, top faces also
    d_q1 = (q1[0, 0, 1, 0] - q1[0, 0, 0, 0]).scalar()
    d_q2 = (q2[0, 0, 0, 1] - q2[0, 0, 0, 0]).scalar()

    q1_left_faces = q1 - 0.5 * d_q1
    q2_bottom_faces = q2 - 0.5 * d_q2

    q1_right_faces = q1 + 0.5 * d_q1
    q2_top_faces = q2 + 0.5 * d_q2

    params.x_top_center, params.y_top_center = coords.get_cartesian_coords(
        q1,
        q2_top_faces,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    params.x_right_center, params.y_right_center = coords.get_cartesian_coords(
        q1_right_faces,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    params.q1 = q1
    params.q2 = q2
    [[params.dx_dq1, params.dx_dq2], [params.dy_dq1, params.dy_dq2]
     ] = jacobian_dx_dq(q1,
                        q2,
                        q1_start_local_left=params.q1_start_local_left,
                        q2_start_local_bottom=params.q2_start_local_bottom)
    [[params.dq1_dx, params.dq1_dy], [params.dq2_dx, params.dq2_dy]
     ] = jacobian_dq_dx(q1,
                        q2,
                        q1_start_local_left=params.q1_start_local_left,
                        q2_start_local_bottom=params.q2_start_local_bottom)
    params.sqrt_det_g = sqrt_det_g(
        q1,
        q2,
        q1_start_local_left=params.q1_start_local_left,
        q2_start_local_bottom=params.q2_start_local_bottom)

    # Calculation of integral measure
    # Evaluating velocity space resolution for each species:
    dp1 = []
    dp2 = []
    dp3 = []
    N_p1 = domain.N_p1
    N_p2 = domain.N_p2
    N_p3 = domain.N_p3
    p1_start = domain.p1_start
    p1_end = domain.p1_end
    p2_start = domain.p2_start
    p2_end = domain.p2_end
    p3_start = domain.p3_start
    p3_end = domain.p3_end

    N_species = len(params.mass)
    for i in range(N_species):
        dp1.append((p1_end[i] - p1_start[i]) / N_p1)
        dp2.append((p2_end[i] - p2_start[i]) / N_p2)
        dp3.append((p3_end[i] - p3_start[i]) / N_p3)

    theta = af.atan(params.p_y / params.p_x)
    p_f = params.fermi_momentum_magnitude(theta)

    if (params.p_space_grid == 'cartesian'):
        dp_x = dp1[0]
        dp_y = dp2[0]
        dp_z = dp3[0]
        params.integral_measure = \
          (4./(2.*np.pi*params.h_bar)**2) * dp_z * dp_y * dp_x

    elif (params.p_space_grid == 'polar2D'):
        # In polar2D coordinates, p1 = radius and p2 = theta
        # Integral : \int delta(r - r_F) F(r, theta) r dr dtheta
        r = p1
        theta = p2
        dp_r = dp1[0]
        dp_theta = dp2[0]

        if (params.zero_temperature):
            # Assumption : F(r, theta) = delta(r-r_F)*F(theta)
            params.integral_measure = \
              (4./(2.*np.pi*params.h_bar)**2) * p_f * dp_theta

        else:
            params.integral_measure = \
              (4./(2.*np.pi*params.h_bar)**2) * r * dp_r * dp_theta

    else:
        raise NotImplementedError('Unsupported coordinate system in p_space')

    # Initialize to zero
    f = 0 * q1 * p1

    # Parameters to define a gaussian in space (representing a 2D ball)
    A = domain.N_p2  # Amplitude (required for normalization)
    sigma_x = 0.05  # Standard deviation in x
    sigma_y = 0.05  # Standard deviation in y
    x_0 = -0.7  # Center in x
    y_0 = 0.  # Center in y

    # TODO: This will work with polar2D p-space only for the moment
    # Particles lying on the ball need to have the same velocity (direction)
    #theta_0_index = (5*N_p2/8) - 1 # Direction of initial velocity
    theta_0_index = int(4 * domain.N_p2 / 8)  # Direction of initial velocity

    print("Initial angle : ")
    af.display(p2[theta_0_index])

    #    f[theta_0_index, :, :]  = A*af.exp(-( (params.x-x_0)**2/(2*sigma_x**2) + \
    #                                          (params.y-y_0)**2/(2*sigma_y**2)
    #                                        )
    #                                      ) +  A*af.exp(-( (params.x-x_0)**2/(2*sigma_x**2) + \
    #                                          (params.y-(-0.5))**2/(2*sigma_y**2)
    #                                        )
    #                                      ) + A*af.exp(-( (params.x-x_0)**2/(2*sigma_x**2) + \
    #                                          (params.y-0.5)**2/(2*sigma_y**2)
    #                                        )
    #                                      )

    f[theta_0_index, :, :] = A * af.exp(-((params.x - x_0)**2 /
                                          (2 * sigma_x**2)))

    af.eval(f)
    return (f)
Ejemplo n.º 7
0
def j_y(f, p1, p2, p3, integral_measure):
    theta = af.atan(params.p_y / params.p_x)
    p_f = params.fermi_momentum_magnitude(theta)
    return (integral_over_p(f * params.fermi_velocity * params.p_y / p_f,
                            integral_measure))
Ejemplo n.º 8
0
def density(f, p1, p2, p3, integral_measure):
    theta = af.atan(params.p_y / params.p_x)
    p_f = params.fermi_momentum_magnitude(theta)
    return (integral_over_p(f + p_f / 2, integral_measure))
Ejemplo n.º 9
0
def simple_arith(verbose=False):
    display_func = _util.display_func(verbose)
    print_func = _util.print_func(verbose)

    a = af.randu(3, 3)
    b = af.constant(4, 3, 3)
    display_func(a)
    display_func(b)

    c = a + b
    d = a
    d += b

    display_func(c)
    display_func(d)
    display_func(a + 2)
    display_func(3 + a)

    c = a - b
    d = a
    d -= b

    display_func(c)
    display_func(d)
    display_func(a - 2)
    display_func(3 - a)

    c = a * b
    d = a
    d *= b

    display_func(c * 2)
    display_func(3 * d)
    display_func(a * 2)
    display_func(3 * a)

    c = a / b
    d = a
    d /= b

    display_func(c / 2.0)
    display_func(3.0 / d)
    display_func(a / 2)
    display_func(3 / a)

    c = a % b
    d = a
    d %= b

    display_func(c % 2.0)
    display_func(3.0 % d)
    display_func(a % 2)
    display_func(3 % a)

    c = a**b
    d = a
    d **= b

    display_func(c**2.0)
    display_func(3.0**d)
    display_func(a**2)
    display_func(3**a)

    display_func(a < b)
    display_func(a < 0.5)
    display_func(0.5 < a)

    display_func(a <= b)
    display_func(a <= 0.5)
    display_func(0.5 <= a)

    display_func(a > b)
    display_func(a > 0.5)
    display_func(0.5 > a)

    display_func(a >= b)
    display_func(a >= 0.5)
    display_func(0.5 >= a)

    display_func(a != b)
    display_func(a != 0.5)
    display_func(0.5 != a)

    display_func(a == b)
    display_func(a == 0.5)
    display_func(0.5 == a)

    a = af.randu(3, 3, dtype=af.Dtype.u32)
    b = af.constant(4, 3, 3, dtype=af.Dtype.u32)

    display_func(a & b)
    display_func(a & 2)
    c = a
    c &= 2
    display_func(c)

    display_func(a | b)
    display_func(a | 2)
    c = a
    c |= 2
    display_func(c)

    display_func(a >> b)
    display_func(a >> 2)
    c = a
    c >>= 2
    display_func(c)

    display_func(a << b)
    display_func(a << 2)
    c = a
    c <<= 2
    display_func(c)

    display_func(-a)
    display_func(+a)
    display_func(~a)
    display_func(a)

    display_func(af.cast(a, af.Dtype.c32))
    display_func(af.maxof(a, b))
    display_func(af.minof(a, b))
    display_func(af.rem(a, b))

    a = af.randu(3, 3) - 0.5
    b = af.randu(3, 3) - 0.5

    display_func(af.abs(a))
    display_func(af.arg(a))
    display_func(af.sign(a))
    display_func(af.round(a))
    display_func(af.trunc(a))
    display_func(af.floor(a))
    display_func(af.ceil(a))
    display_func(af.hypot(a, b))
    display_func(af.sin(a))
    display_func(af.cos(a))
    display_func(af.tan(a))
    display_func(af.asin(a))
    display_func(af.acos(a))
    display_func(af.atan(a))
    display_func(af.atan2(a, b))

    c = af.cplx(a)
    d = af.cplx(a, b)
    display_func(c)
    display_func(d)
    display_func(af.real(d))
    display_func(af.imag(d))
    display_func(af.conjg(d))

    display_func(af.sinh(a))
    display_func(af.cosh(a))
    display_func(af.tanh(a))
    display_func(af.asinh(a))
    display_func(af.acosh(a))
    display_func(af.atanh(a))

    a = af.abs(a)
    b = af.abs(b)

    display_func(af.root(a, b))
    display_func(af.pow(a, b))
    display_func(af.pow2(a))
    display_func(af.sigmoid(a))
    display_func(af.exp(a))
    display_func(af.expm1(a))
    display_func(af.erf(a))
    display_func(af.erfc(a))
    display_func(af.log(a))
    display_func(af.log1p(a))
    display_func(af.log10(a))
    display_func(af.log2(a))
    display_func(af.sqrt(a))
    display_func(af.cbrt(a))

    a = af.round(5 * af.randu(3, 3) - 1)
    b = af.round(5 * af.randu(3, 3) - 1)

    display_func(af.factorial(a))
    display_func(af.tgamma(a))
    display_func(af.lgamma(a))
    display_func(af.iszero(a))
    display_func(af.isinf(a / b))
    display_func(af.isnan(a / a))

    a = af.randu(5, 1)
    b = af.randu(1, 5)
    c = af.broadcast(lambda x, y: x + y, a, b)
    display_func(a)
    display_func(b)
    display_func(c)

    @af.broadcast
    def test_add(aa, bb):
        return aa + bb

    display_func(test_add(a, b))
Ejemplo n.º 10
0
def arctan(x):
    if isinstance(x, afnumpy.ndarray):
        s = arrayfire.atan(x.d_array)
        return afnumpy.ndarray(x.shape, dtype=pu.typemap(s.dtype()), af_array=s)
    else:
        return numpy.arctan(x)
Ejemplo n.º 11
0
b = af.randu(3, 3) - 0.5

af.display(af.abs(a))
af.display(af.arg(a))
af.display(af.sign(a))
af.display(af.round(a))
af.display(af.trunc(a))
af.display(af.floor(a))
af.display(af.ceil(a))
af.display(af.hypot(a, b))
af.display(af.sin(a))
af.display(af.cos(a))
af.display(af.tan(a))
af.display(af.asin(a))
af.display(af.acos(a))
af.display(af.atan(a))
af.display(af.atan2(a, b))

c = af.cplx(a)
d = af.cplx(a, b)
af.display(c)
af.display(d)
af.display(af.real(d))
af.display(af.imag(d))
af.display(af.conjg(d))

af.display(af.sinh(a))
af.display(af.cosh(a))
af.display(af.tanh(a))
af.display(af.asinh(a))
af.display(af.acosh(a))
Ejemplo n.º 12
0
b = af.randu(3,3) - 0.5

af.display(af.abs(a))
af.display(af.arg(a))
af.display(af.sign(a))
af.display(af.round(a))
af.display(af.trunc(a))
af.display(af.floor(a))
af.display(af.ceil(a))
af.display(af.hypot(a, b))
af.display(af.sin(a))
af.display(af.cos(a))
af.display(af.tan(a))
af.display(af.asin(a))
af.display(af.acos(a))
af.display(af.atan(a))
af.display(af.atan2(a, b))

c = af.cplx(a)
d = af.cplx(a,b)
af.display(c)
af.display(d)
af.display(af.real(d))
af.display(af.imag(d))
af.display(af.conjg(d))

af.display(af.sinh(a))
af.display(af.cosh(a))
af.display(af.tanh(a))
af.display(af.asinh(a))
af.display(af.acosh(a))