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)
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)
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)
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)
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)
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)))
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)
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)
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)