def _set_threads(n_threads): global _n_threads try: mkl_set_num_threads(n_threads) except TypeError: raise TypeError('n_threads must be an Integer') _n_threads = n_threads
def run_simulation_skytem(args): """ run_simulation_skytem -------------- """ from pyMKL import mkl_set_num_threads i_src, work_dir, n_thread = args mkl_set_num_threads(n_thread) inputs = dill.load(open(Path(work_dir).joinpath("inputs_{}.pkl".format(i_src)).as_posix(), 'rb')) mesh_local = inputs['mesh_local'] actv_local = inputs['actv_local'] sigma_interpolator = inputs['sigma_interpolator'] srcloc = inputs['srcloc'] rxloc = inputs['rxloc'] time = inputs['time'] time_input_currents = inputs['time_input_currents'] input_currents = inputs['input_currents'] base_frequency = inputs['base_frequency'] time_dual_moment = inputs['time_dual_moment'] time_input_currents_dual_moment = inputs['time_input_currents_dual_moment'] input_currents_dual_moment = inputs['input_currents_dual_moment'] base_frequency_dual_moment = inputs['base_frequency_dual_moment'] values = sigma_interpolator(mesh_local.gridCC[actv_local,:]) sigma_local = np.ones(mesh_local.nC) * 1e-8 sigma_local[actv_local] = values rx = EM.TDEM.Rx.Point_dbdt(rxloc, np.logspace(np.log10(1e-6), np.log10(1e-2), 31), 'z') src = EM.TDEM.Src.MagDipole([rx], waveform=EM.TDEM.Src.StepOffWaveform(), loc=srcloc) survey = EM.TDEM.Survey([src]) prb = ProblemSkyTEM(mesh_local, sigma=sigma_local, verbose=False) dts = np.diff(np.logspace(-6, -1, 50)) prb.timeSteps = [ (3e-7, 6),(1e-6, 5),(2e-6, 5),(5e-6, 5), (1e-5, 5),(2e-5, 5),(5e-5, 5),(1e-4, 5), (2e-4, 5),(5e-4, 5),(1e-3, 15) ] prb.Solver = Pardiso prb.pair(survey) data = prb.simulate( sigma_local, time, time_dual_moment, time_input_currents, input_currents, time_input_currents_dual_moment, input_currents_dual_moment, base_frequency=base_frequency, base_frequency_dual_moment=base_frequency_dual_moment ) return data
from SimPEG import Mesh, Utils import numpy as np from simpegEM1D import diffusion_distance from pymatsolver import Pardiso from SimPEG import EM from scipy.constants import mu_0 from scipy.interpolate import interp1d from simpegEM1D.Waveforms import piecewise_pulse_fast from pyMKL import mkl_set_num_threads from simpegskytem import ProblemSkyTEM from mesh_utils import refineTree, meshBuilder num_threads = 4 mkl_set_num_threads(num_threads) tmin, tmax = 1e-6, 1e-2 sigma_for_padding = 1. / 100. # print (diffusion_distance(1e-2, sigma_for_padding) * 2) # print (diffusion_distance(1e-6, sigma_for_padding) / 2.) # print (diffusion_distance(1e-6, sigma_for_padding) * 2) padding_distance = np.round(diffusion_distance(1e-2, sigma_for_padding) * 2) data_dir = "./data/" waveform_hm = np.loadtxt(data_dir + "HM_butte_312.txt") time_gates_hm = np.loadtxt(data_dir + "HM_butte_312_gates")[7:, :] * 1e-6 waveform_lm = np.loadtxt(data_dir + "LM_butte_312.txt") time_gates_lm = np.loadtxt(data_dir + "LM_butte_312_gates")[8:, :] * 1e-6 time_input_currents_HM = waveform_hm[:, 0] input_currents_HM = waveform_hm[:, 1] time_input_currents_LM = waveform_lm[:, 0]
def test_mkl_set_num_threads(self): pyMKL.mkl_set_num_threads(1) pyMKL.mkl_set_num_threads(pyMKL.mkl_get_max_threads())