Пример #1
0
 def setUp(self):
     with open(os.path.join(test_dir, 'test_toec_data.json')) as f:
         self.data_dict = json.load(f)
     self.strains = [Strain(sm) for sm in self.data_dict['strains']]
     self.pk_stresses = [Stress(d) for d in self.data_dict['pk_stresses']]
     self.c2 = self.data_dict["C2_raw"]
     self.c3 = self.data_dict["C3_raw"]
     self.exp = ElasticTensorExpansion.from_voigt([self.c2, self.c3])
     self.cu = Structure.from_spacegroup("Fm-3m", Lattice.cubic(3.623),
                                         ["Cu"], [[0] * 3])
     indices = [(0, 0), (0, 1), (3, 3)]
     values = [167.8, 113.5, 74.5]
     cu_c2 = ElasticTensor.from_values_indices(values,
                                               indices,
                                               structure=self.cu,
                                               populate=True)
     indices = [(0, 0, 0), (0, 0, 1), (0, 1, 2), (0, 3, 3), (0, 5, 5),
                (3, 4, 5)]
     values = [-1507., -965., -71., -7., -901., 45.]
     cu_c3 = Tensor.from_values_indices(values,
                                        indices,
                                        structure=self.cu,
                                        populate=True)
     self.exp_cu = ElasticTensorExpansion([cu_c2, cu_c3])
     cu_c4 = Tensor.from_voigt(self.data_dict["Cu_fourth_order"])
     self.exp_cu_4 = ElasticTensorExpansion([cu_c2, cu_c3, cu_c4])
     warnings.simplefilter("ignore")
Пример #2
0
 def test_from_values_indices(self):
     sn = self.get_structure("Sn")
     indices = [(0, 0), (0, 1), (3, 3)]
     values = [259.31, 160.71, 73.48]
     et = Tensor.from_values_indices(values,
                                     indices,
                                     structure=sn,
                                     populate=True).voigt.round(4)
     self.assertAlmostEqual(et[1, 1], 259.31)
     self.assertAlmostEqual(et[2, 2], 259.31)
     self.assertAlmostEqual(et[0, 2], 160.71)
     self.assertAlmostEqual(et[1, 2], 160.71)
     self.assertAlmostEqual(et[4, 4], 73.48)
     self.assertAlmostEqual(et[5, 5], 73.48)
Пример #3
0
 def test_tensor_mapping(self):
     # Test get
     tbs = [Tensor.from_voigt(row) for row in np.eye(6) * 0.01]
     reduced = symmetry_reduce(tbs, self.get_structure("Sn"))
     tkey = Tensor.from_values_indices([0.01], [(0, 0)])
     tval = reduced[tkey]
     for tens_1, tens_2 in zip(tval, reduced[tbs[0]]):
         self.assertAlmostEqual(tens_1, tens_2)
     # Test set
     reduced[tkey] = "test_val"
     self.assertEqual(reduced[tkey], "test_val")
     # Test empty initialization
     empty = TensorMapping()
     self.assertEqual(empty._tensor_list, [])
Пример #4
0
 def setUp(self):
     with open(os.path.join(test_dir, 'test_toec_data.json')) as f:
         self.data_dict = json.load(f)
     self.strains = [Strain(sm) for sm in self.data_dict['strains']]
     self.pk_stresses = [Stress(d) for d in self.data_dict['pk_stresses']]
     self.c2 = self.data_dict["C2_raw"]
     self.c3 = self.data_dict["C3_raw"]
     self.exp = ElasticTensorExpansion.from_voigt([self.c2, self.c3])
     self.cu = Structure.from_spacegroup("Fm-3m", Lattice.cubic(3.623),
                                         ["Cu"], [[0]*3])
     indices = [(0, 0), (0, 1), (3, 3)]
     values = [167.8, 113.5, 74.5]
     cu_c2 = ElasticTensor.from_values_indices(values, indices, structure=self.cu,
                                               populate=True)
     indices = [(0, 0, 0), (0, 0, 1), (0, 1, 2),
                (0, 3, 3), (0, 5, 5), (3, 4, 5)]
     values = [-1507., -965., -71., -7., -901., 45.]
     cu_c3 = Tensor.from_values_indices(values, indices, structure=self.cu,
                                        populate=True)
     self.exp_cu = ElasticTensorExpansion([cu_c2, cu_c3])
     cu_c4 = Tensor.from_voigt(self.data_dict["Cu_fourth_order"])
     self.exp_cu_4 = ElasticTensorExpansion([cu_c2, cu_c3, cu_c4])
     warnings.simplefilter("ignore")