10,  #number of air layers, set to 0 to incorporate bathymetry only
    res_model=100,  # halfspace resistivity value for reference model
    n_layers=100,  # total number of z layers, including air
    z1_layer=10,  # first layer thickness
    pad_method='stretch',  # method for calculating padding
    z_mesh_method='new',
    z_target_depth=
    120000  # depth to bottom of core model (padding after this depth)
)

mo.make_mesh()
mo.write_model_file(save_path=workdir)

# Add topography from EDI data.
# This function takes the same arguments as `add_topography_to_model2`
#  but instead of a DEM file it takes a Data object.
mo.add_topography_from_data(do)
mo.write_model_file(save_path=workdir)

# update data elevations
do.project_stations_on_topography(mo)

# show the mesh
mo.plot_sealevel_resistivity()

co = Covariance()
co.smoothing_east = 0.4
co.smoothing_north = 0.4
co.smoothing_z = 0.4
co.write_covariance_file(model_fn=mo.model_fn)
Ejemplo n.º 2
0
    def test_fun_edi_elevation(self):

        edipath = EDI_DATA_DIR  # path where edi files are located
        # set the dir to the output from the previously correct run
        self._expected_output_dir = os.path.join(SAMPLE_DIR, 'ModEM')

        # period list (will not include periods outside of the range of the edi file)
        start_period = -2
        stop_period = 3
        n_periods = 17
        period_list = np.logspace(start_period, stop_period, n_periods)

        # list of edi files, search for all files ending with '.edi'
        edi_list = [
            os.path.join(edipath, ff) for ff in os.listdir(edipath)
            if (ff.endswith('.edi'))
        ]

        do = Data(
            edi_list=edi_list,
            inv_mode='1',
            save_path=self._output_dir,
            period_list=period_list,
            error_type_z='floor_egbert',
            error_value_z=5,
            error_type_tipper='floor_abs',
            error_value_tipper=.03,
            model_epsg=28354  # model epsg, currently set to utm zone 54
        )

        do.write_data_file()

        # create model file
        mo = Model(
            station_locations=do.station_locations,
            cell_size_east=500,
            cell_size_north=500,
            pad_north=
            7,  # number of padding cells in each of the north and south directions
            pad_east=7,  # number of east and west padding cells
            pad_z=6,  # number of vertical padding cells
            pad_stretch_v=
            1.6,  # factor to increase by in padding cells (vertical)
            pad_stretch_h=
            1.4,  # factor to increase by in padding cells (horizontal)
            n_air_layers=10,  # number of air layers
            res_model=100,  # halfspace resistivity value for reference model
            n_layers=90,  # total number of z layers, including air
            z1_layer=10,  # first layer thickness
            pad_method='stretch',
            z_target_depth=120000)

        mo.make_mesh()
        mo.write_model_file(save_path=self._output_dir)

        # Add topography from EDI data
        mo.add_topography_from_data(do)
        mo.write_model_file(save_path=self._output_dir)

        # BM: note this function makes a call to `write_data_file` and this is the datafile being
        #  compared!
        do.project_stations_on_topography(mo)

        co = Covariance()
        co.write_covariance_file(model_fn=mo.model_fn)

        # BM: if this test is failing check that the correct filenames are being selected
        #   for comparison
        for test_output, expected_output in (
            ("ModEM_Data_topo.dat", "ModEM_Data_EDI_elev.dat"),
            ("covariance.cov", "covariance_EDI_elev.cov"),
            ("ModEM_Model_File.rho", "ModEM_Model_File_EDI_elev.rho")):
            output_data_file = os.path.normpath(
                os.path.join(self._output_dir, test_output))

            self.assertTrue(os.path.isfile(output_data_file),
                            "output data file not found")

            expected_data_file = os.path.normpath(
                os.path.join(self._expected_output_dir, expected_output))

            self.assertTrue(
                os.path.isfile(expected_data_file),
                "Ref output data file '{}' does not exist, nothing to compare with"
                .format(expected_data_file))

            is_identical, msg = diff_files(output_data_file,
                                           expected_data_file)
            print(msg)
            self.assertTrue(
                is_identical,
                "The output file '{}' is not the same with the baseline file '{}'."
                .format(output_data_file, expected_data_file))