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