Beispiel #1
0
    def test_field_extradims_mesh(self):
        # create mesh
        parallel = False
        if constants._ESMF_MPIRUN_NP != 4:
            raise SkipTest('This test must be run with 4 processors.')
        else:
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn, _ = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.R8, meshloc=MeshLoc.NODE)
        field2 = Field(mesh,
                       meshloc=MeshLoc.ELEMENT,
                       ndbounds=np.array([5, 2]))

        field.data[...] = 10
        self.examine_field_attributes(field)

        field2.data[...] = 10
        self.examine_field_attributes(field2)
Beispiel #2
0
    def disable_est_field_slice_mesh_extraindices(self):
        # create mesh
        parallel = False
        if constants._ESMF_MPIRUN_NP != 4:
            raise SkipTest('This test must be run with 4 processors.')
        else:
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50()

        field = Field(mesh,
                      typekind=TypeKind.R8,
                      meshloc=MeshLoc.NODE,
                      ndbounds=[5, 2])
        self.examine_field_attributes(field)

        for i in range(5):
            for j in range(2):
                field[:, :, i, j] = i + j

        field2 = field[0:5, 0:2, 0:1]
        self.examine_field_attributes(field2)

        field3 = field2[2:4, 1:2, 0:1]
        self.examine_field_attributes(field3)

        assert field.data.shape == (10, 5, 2)
        assert field2.data.shape == (5, 2, 1)
        assert field3.data.shape == (2, 1, 1)
Beispiel #3
0
    def disable_est_field_slice_mesh_extraindices(self):
        # create mesh
        parallel = False
        if pet_count() > 1:
            if pet_count() > 4:
                raise NameError('MPI rank must be 4 in parallel mode!')
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.R8,
                      meshloc=MeshLoc.NODE, ndbounds=[5, 2])
        self.examine_field_attributes(field)

        for i in range(5):
            for j in range(2):
                field[:, :, i, j] = i + j

        field2 = field[0:5, 0:2, 0:1]
        self.examine_field_attributes(field2)

        field3 = field2[2:4, 1:2, 0:1]
        self.examine_field_attributes(field3)

        assert field.data.shape == (10, 5, 2)
        assert field2.data.shape == (5, 2, 1)
        assert field3.data.shape == (2, 1, 1)
Beispiel #4
0
    def test_field_uniqueness(self):
        # create mesh
        parallel = False
        if constants._ESMF_MPIRUN_NP != 4:
            raise SkipTest('This test must be run with 4 processors.')
        else:
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn, _ = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.I4, meshloc=MeshLoc.NODE)
        self.examine_field_attributes(field)

        field2 = Field(mesh, typekind=TypeKind.I4, meshloc=MeshLoc.ELEMENT)
        self.examine_field_attributes(field2)

        for i in range(field.data.shape[0]):
            field.data[i] = 10

        for i in range(field2.data.shape[0]):
            field2.data[i] = 10

        assert (field.struct.ptr != field2.struct.ptr)
Beispiel #5
0
    def test_field_uniqueness(self):
        # create mesh
        parallel = False
        if pet_count() > 1:
            if pet_count() > 4:
                raise NameError('MPI rank must be 4 in parallel mode!')
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn, _ = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.I4, meshloc=MeshLoc.NODE)
        self.examine_field_attributes(field)

        field2 = Field(mesh, typekind=TypeKind.I4, meshloc=MeshLoc.ELEMENT)
        self.examine_field_attributes(field2)

        for i in range(field.data.shape[0]):
            field.data[i] = 10

        for i in range(field2.data.shape[0]):
            field2.data[i] = 10

        assert (field.struct.ptr != field2.struct.ptr)
Beispiel #6
0
    def test_field_create_2d_mesh(self):
        parallel = False
        if pet_count() > 1:
            parallel = True

        if parallel:
            if constants._ESMF_MPIRUN_NP != 4:
                raise SkipTest('This test must be run with 4 processors.')

        keywords = dict(
            meshloc=[MeshLoc.NODE, MeshLoc.ELEMENT],
            typekind_field=[
                None, TypeKind.I4, TypeKind.I8, TypeKind.R4, TypeKind.R8
            ],
        )
        # TODO: Mesh masking, periodicity?
        # TODO: extra dimensions on a mesh?

        testcases = self.iter_product_keywords(keywords)
        fail = []
        for a in testcases:
            try:
                # create mesh
                mesh = None
                if parallel:
                    mesh, nodeCoord, nodeOwner, elemType, elemConn, elemCoord = \
                        mesh_create_50_parallel()
                else:
                    mesh, nodeCoord, nodeOwner, elemType, elemConn, elemCoord = \
                        mesh_create_50()

                field = Field(mesh,
                              name="test_field_mesh_2d",
                              typekind=a.typekind_field,
                              meshloc=a.meshloc)
                self.examine_field_attributes(field)
                field2 = field[2:10]
                self.examine_field_attributes(field2)
                field2.destroy()
                field.destroy()
                mesh.destroy()
            except:
                fail += a

        if len(fail) > 0:
            raise ValueError(
                "The following combinations of parameters failed to create a proper Field: "
                + str(len(fail)))
Beispiel #7
0
    def test_field_slice_mesh(self):
        parallel = False
        if pet_count() > 1:
            parallel = True

        if parallel:
            if constants._ESMF_MPIRUN_NP != 4:
                raise SkipTest('This test must be run with 4 processors.')

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn, _ = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.R8, meshloc=MeshLoc.NODE)
        self.examine_field_attributes(field)

        field2 = field[0:5]
        self.examine_field_attributes(field2)

        field3 = field2[2:4]
        self.examine_field_attributes(field3)

        assert (field.data.shape == (64, ))
        assert (field2.data.shape == (5, ))
        assert (field3.data.shape == (2, ))

        assert (field.upper_bounds.tolist() == [64])
        assert (field2.upper_bounds.tolist() == [5])
        assert (field3.upper_bounds.tolist() == [2])

        assert (field.grid.size[0] == 64)
        assert (field2.grid.size[0] == 5)
        assert (field3.grid.size[0] == 2)
Beispiel #8
0
    def test_field_slice_mesh(self):
        # create mesh
        parallel = False
        if pet_count() > 1:
            if pet_count() > 4:
                raise NameError('MPI rank must be 4 in parallel mode!')
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn, _ = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.R8, meshloc=MeshLoc.NODE)
        self.examine_field_attributes(field)

        field2 = field[0:5]
        self.examine_field_attributes(field2)

        field3 = field2[2:4]
        self.examine_field_attributes(field3)

        assert (field.data.shape == (64,))
        assert (field2.data.shape == (5,))
        assert (field3.data.shape == (2,))

        assert (field.upper_bounds.tolist() == [64])
        assert (field2.upper_bounds.tolist() == [5])
        assert (field3.upper_bounds.tolist() == [2])

        assert (field.grid.size[0] == 64)
        assert (field2.grid.size[0] == 5)
        assert (field3.grid.size[0] == 2)
Beispiel #9
0
    def test_field_extradims_mesh(self):
        # create mesh
        parallel = False
        if pet_count() > 1:
            if pet_count() > 4:
                raise NameError('MPI rank must be 4 in parallel mode!')
            parallel = True

        mesh = None
        if parallel:
            mesh, nodeCoord, nodeOwner, elemType, elemConn = \
                mesh_create_50_parallel()
        else:
            mesh, nodeCoord, nodeOwner, elemType, elemConn, _ = \
                mesh_create_50()

        field = Field(mesh, typekind=TypeKind.R8, meshloc=MeshLoc.NODE)
        field2 = Field(mesh, meshloc=MeshLoc.ELEMENT, ndbounds=np.array([5, 2]))

        field.data[...] = 10
        self.examine_field_attributes(field)

        field2.data[...] = 10
        self.examine_field_attributes(field2)