#python #modeling
Вопрос:
Я новичок, пытающийся задать топографию для сетки с помощью функции Гаусса, но получил ошибку в названии строки ydel =.
# pick depth above which to deform mesh ydeform = -0.5 yCoordFn = uw.function.input()[1] xCoordFn = uw.function.input()[0] #Gaussian bell curve (topography) ydel = 0.2 * uw.function.math.exp ** (-((xCoordFn - 2.)** 2.) / (2. * 0.2230386** 2.)) if deformedmesh: with mesh.deform_mesh(): for i in range(len(mesh.data[:])): y = mesh.data[i,1] if y gt;= ydeform: delY = ydel.evaluate((mesh.data[i,0],mesh.data[i,1])) #0.1 * (mesh.data[i,0] 1.)/2. dY = (y - ydeform)/(-ydeform) * delY mesh.data[i,1] = dY
Я попытался разделить уравнение на шаги, подобные этому,
def StepA(): return 2. *( 0.2230386** 2.) def StepB(): return (xCoordFn - 2.)** 2. def StepC(): return StepB / StepA def StepD(): return uw.function.math.exp ** -(StepC) ydel = 0.2 * StepD
и это,
StepA = 2. * ( 0.2230386** 2.) StepA = float(StepA) StepB = (xCoordFn - 2.) ** 2. StepB = float(StepB) StepC = StepB/StepA StepC = float(StepC) StepD = uw.function.math.exp ** -(StepC) StepD = float(StepD) ydel = 0.2 * StepD
но все они дают одинаковую ошибку для ** pow (), но с функцией или плавающей точкой, или аргумент с плавающей точкой должен быть строкой или числом.
Я должен использовать uw.функция из-за библиотеки геодинамического моделирования (underworld2) Я использую.
Комментарии:
1.
exp()
это функция . Из чего вы пытаетесь извлечь выгоду ?2. Я предполагаю , что , когда вы говорите
uw.function.math.exp ** x
, вы действительно имели в видуuw.function.math.exp( x )
печатать, в каждом конкретном случае. Это выражениеexp(n)
дает вамe**n
.3. Я в основном пытаюсь использовать уравнение функции Гуассиана @jasonharper