Пример #1
0
 def test_read_npy_series_data(self):
     fem_data = FEMData.read_npy_directory('tests/data/npy/temperatures')
     np.testing.assert_almost_equal(
         fem_data.nodal_data.get_attribute_data('nodal_t_10'),
         np.array([[9.2546418], [9.3392005], [10.689137], [18.477557],
                   [15.111514], [16.652916]]))
     np.testing.assert_almost_equal(
         fem_data.nodal_data.get_attribute_data('nodal_t_100'),
         np.array([[9.3394346], [9.4908689], [10.985905], [18.361863],
                   [15.379292], [16.664873]]))
Пример #2
0
 def test_read_saved_npy_mixture_shell(self):
     fem_data = FEMData.read_directory('obj',
                                       'tests/data/obj/mixture_shell',
                                       read_npy=False,
                                       save=False)
     write_dir_name = 'tests/data/obj/write_npy_mixture_shell'
     if os.path.exists(write_dir_name):
         shutil.rmtree(write_dir_name)
     fem_data.save(write_dir_name)
     npy_fem_data = FEMData.read_npy_directory(write_dir_name)
     desired_elements = [
         np.array([1, 2, 3, 4]),
         np.array([2, 3, 5]),
         np.array([3, 6, 7, 4])
     ]
     for e1, e2 in zip(npy_fem_data.elements.data, desired_elements):
         np.testing.assert_array_equal(e1, e2)
Пример #3
0
    def test_read_saved_npy_mixed_elements(self):
        fem_data = FEMData.read_directory('fistr',
                                          'tests/data/fistr/mixture_solid',
                                          read_npy=False,
                                          save=False)
        write_dir_name = 'tests/data/fistr/write_npy_mixture_solid'
        if os.path.exists(write_dir_name):
            shutil.rmtree(write_dir_name)
        fem_data.settings = {}
        fem_data.save(write_dir_name)
        npy_fem_data = FEMData.read_npy_directory(write_dir_name)
        npy_fem_data.write('fistr',
                           os.path.join(write_dir_name, 'mesh'),
                           overwrite=True)

        np.testing.assert_array_equal(
            fem_data.elements['hex'].ids,
            npy_fem_data.elements['hex'].ids,
        )
        np.testing.assert_array_equal(
            fem_data.elements['hex'].data,
            npy_fem_data.elements['hex'].data,
        )
        np.testing.assert_array_equal(
            fem_data.elements['tet'].ids,
            npy_fem_data.elements['tet'].ids,
        )
        np.testing.assert_array_equal(
            fem_data.elements['tet'].data,
            npy_fem_data.elements['tet'].data,
        )

        if RUN_FISTR:
            os.system(f"cd {write_dir_name} " + "&& fistr1 > /dev/null 2>&1")
            written_fem_data_with_res = FEMData.read_directory('fistr',
                                                               write_dir_name,
                                                               read_npy=False)
            np.testing.assert_almost_equal(
                written_fem_data_with_res.nodal_data['DISPLACEMENT'].data,
                fem_data.nodal_data['DISPLACEMENT'].data,
                decimal=5)
Пример #4
0
    def test_read_saved_npy(self):
        fem_data = FEMData.read_directory(
            'fistr', 'tests/data/fistr/thermal_id_not_from_1', read_npy=False)
        write_dir_name = Path('tests/data/fistr/write_npy')
        if write_dir_name.exists():
            shutil.rmtree(write_dir_name)
        fem_data.save(write_dir_name)
        npy_fem_data = FEMData.read_npy_directory(write_dir_name)
        npy_fem_data.write('fistr', write_dir_name / 'mesh', overwrite=True)

        if RUN_FISTR:
            subprocess.check_call("fistr1 > /dev/null 2>&1",
                                  cwd=write_dir_name,
                                  shell=True)
            written_fem_data_with_res = FEMData.read_directory('fistr',
                                                               write_dir_name,
                                                               read_npy=False)
            np.testing.assert_almost_equal(
                written_fem_data_with_res.nodal_data['DISPLACEMENT'].data,
                fem_data.nodal_data['DISPLACEMENT'].data,
                decimal=5)