mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-28 22:04:20 +08:00
26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
import numpy as np
|
|
from utils import ndgrid
|
|
|
|
|
|
def exampleLomGird(nC, exType):
|
|
assert type(nC) == list, "nC must be a list containing the number of nodes"
|
|
assert len(nC) == 2 or len(nC) == 3, "nC must either two or three dimensions"
|
|
exType = exType.lower()
|
|
|
|
possibleTypes = ['rect', 'rotate']
|
|
assert exType in possibleTypes, "Not a possible example type."
|
|
|
|
if exType == 'rect':
|
|
return ndgrid([np.cumsum(np.r_[0, np.ones(nx)/nx]) for nx in nC], vector=False)
|
|
elif exType == 'rotate':
|
|
if len(nC) == 2:
|
|
X, Y = ndgrid([np.cumsum(np.r_[0, np.ones(nx)/nx]) for nx in nC], vector=False)
|
|
amt = 0.5-np.sqrt((X - 0.5)**2 + (Y - 0.5)**2)
|
|
amt[amt < 0] = 0
|
|
return X + (-(Y - 0.5))*amt, Y + (+(X - 0.5))*amt
|
|
elif len(nC) == 3:
|
|
X, Y, Z = ndgrid([np.cumsum(np.r_[0, np.ones(nx)/nx]) for nx in nC], vector=False)
|
|
amt = 0.5-np.sqrt((X - 0.5)**2 + (Y - 0.5)**2 + (Z - 0.5)**2)
|
|
amt[amt < 0] = 0
|
|
return X + (-(Y - 0.5))*amt, Y + (-(Z - 0.5))*amt, Z + (-(X - 0.5))*amt
|