Пример #1
0
    def definition(u, diffusion, *, weight):
        from __externals__ import fwd_diff, BRANCH

        with computation(PARALLEL), interval(...):
            laplacian = lap_op(u=u)
            laplacian2 = lap_op(u=u)
            if BRANCH:
                flux_i, flux_j = fwd_diff(field1=laplacian, field2=laplacian2)
            else:
                flux_i = fwd_diff(field1=laplacian)
                flux_j = fwd_diff_op_y(field=laplacian)
            diffusion = u[0, 0,
                          0] - weight * (flux_i[0, 0, 0] - flux_i[-1, 0, 0] +
                                         flux_j[0, 0, 0] - flux_j[0, -1, 0])
Пример #2
0
    def definition(u, diffusion, *, weight):
        from __externals__ import fwd_diff

        with computation(PARALLEL), interval(...):
            laplacian = lap_op(u=u)
            flux_i, flux_j = fwd_diff(field=laplacian)
            diffusion = u[0, 0, 0] - weight * (
                flux_i[0, 0, 0] - flux_i[-1, 0, 0] + flux_j[0, 0, 0] - flux_j[0, -1, 0]
            )
Пример #3
0
    def definition(u, diffusion, *, weight):
        from __externals__ import fwd_diff

        with computation(PARALLEL), interval(...):
            laplacian = lap_op(u=u)
            flux_i, flux_j = fwd_diff(field=laplacian)
            diffusion = u[  # noqa: F841 # Local name is assigned to but never used
                0, 0, 0] - weight * (flux_i[0, 0, 0] - flux_i[-1, 0, 0] +
                                     flux_j[0, 0, 0] - flux_j[0, -1, 0])
Пример #4
0
    def definition(u, diffusion, *, weight):
        """
        Horizontal diffusion stencil.

        Parameters
        ----------
        u : 3D float field, input
        diffusion : 3D float field, output
        weight : diffusion coefficient
        """
        from __externals__ import fwd_diff, BRANCH

        with computation(PARALLEL), interval(...):
            laplacian = lap_op(u=u)
            laplacian2 = lap_op(u=u)
            if __INLINED(BRANCH):
                flux_i, flux_j = fwd_diff(field1=laplacian, field2=laplacian2)
            else:
                flux_i = fwd_diff(field1=laplacian)
                flux_j = fwd_diff_op_y(field=laplacian)
            diffusion = u[0, 0, 0] - weight * (
                flux_i[0, 0, 0] - flux_i[-1, 0, 0] + flux_j[0, 0, 0] - flux_j[0, -1, 0]
            )