コード例 #1
0
ファイル: direct.py プロジェクト: ngodber/pymatsolver
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
コード例 #2
0
ファイル: EMSimulation.py プロジェクト: igotchalk/SWIsmall
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
コード例 #3
0
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]
コード例 #4
0
ファイル: test_MKLUtils.py プロジェクト: rowanc1/pyMKL
 def test_mkl_set_num_threads(self):
     pyMKL.mkl_set_num_threads(1)
     pyMKL.mkl_set_num_threads(pyMKL.mkl_get_max_threads())