mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-28 04:55:25 +08:00
e622dfb5cc
Conflicts: .coveragerc .gitignore .travis.yml docs/api_Utils.rst docs/conf.py docs/index.rst requirements.txt setup.py
50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
import numpy as np
|
|
from scipy.constants import mu_0, epsilon_0
|
|
|
|
# useful params
|
|
def omega(freq):
|
|
"""Angular frequency, omega"""
|
|
return 2.*np.pi*freq
|
|
|
|
def k(freq, sigma, mu=mu_0, eps=epsilon_0):
|
|
""" Eq 1.47 - 1.49 in Ward and Hohmann """
|
|
w = omega(freq)
|
|
alp = w * np.sqrt( mu*eps/2 * ( np.sqrt(1. + (sigma / (eps*w))**2 ) + 1) )
|
|
beta = w * np.sqrt( mu*eps/2 * ( np.sqrt(1. + (sigma / (eps*w))**2 ) - 1) )
|
|
return alp - 1j*beta
|
|
|
|
# Constitutive relations
|
|
def e_from_j(prob,j):
|
|
eqLocs = prob._eqLocs
|
|
if eqLocs is 'FE':
|
|
MSigmaI = prob.MeSigmaI
|
|
elif eqLocs is 'EF':
|
|
MSigmaI = prob.MfRho
|
|
return MSigmaI*j
|
|
|
|
def j_from_e(prob,e):
|
|
eqLocs = prob._eqLocs
|
|
if eqLocs is 'FE':
|
|
MSigma = prob.MeSigma
|
|
elif eqLocs is 'EF':
|
|
MSigma = prob.MfRhoI
|
|
return MSigma*e
|
|
|
|
def b_from_h(prob,h):
|
|
eqLocs = prob._eqLocs
|
|
if eqLocs is 'FE':
|
|
MMu = prob.MfMuiI
|
|
elif eqLocs is 'EF':
|
|
MMu = prob.MeMu
|
|
return MMu*h
|
|
|
|
def h_from_b(prob,b):
|
|
eqLocs = prob._eqLocs
|
|
if eqLocs is 'FE':
|
|
MMuI = prob.MfMui
|
|
elif eqLocs is 'EF':
|
|
MMuI = prob.MeMuI
|
|
return MMuI*b
|
|
|
|
|