Ошибка при выполнении flopy.modflow.HeadObservation: ValueError: Невозможно привести структуру из структуры к неструктуре, за исключением случаев, когда структура имеет только одно поле - PullRequest
0 голосов
/ 02 октября 2018

Я использую Flopy для настройки модели MODFLOW в Python 2.7.Я пытаюсь добавить главные наблюдения через пакет HOB.Следующий пример кода взят непосредственно из документации по функции на https://modflowpy.github.io/flopydoc/mfhob.html:

    import flopy
    model = flopy.modflow.Modflow()
    dis = flopy.modflow.ModflowDis(model, nlay=1, nrow=11, ncol=11,
                                   nper=2, perlen=[1,1])
    obs = flopy.modflow.mfhob.HeadObservation(model, layer=0, row=5,
                                              column=5, 
                                              time_series_data=[[1.,54.4], 
                                                                [2., 55.2]])

Используя этот пример кода для функции, я получаю следующую ошибку:

    ValueError: Can't cast from structure to non-structure, except if the structure only has a single field.

screenshot of error message showing traceback

Я получаю ту же ошибку, когда пытаюсь создать наблюдение за головой для моей модели, которая является устойчивой и имеет некоторые другие входные значения.К сожалению, я не смог найти рабочий пример для сравнения.Есть идеи?

Редактировать: код jdhughes работает как шарм;НО я также забыл обновить Flopy до последней версии - сначала я попытался обновить numpy, но не избавился от ValueError, пока не обновил Flopy с 3.2.8 до 3.2.9.Работает сейчас, спасибо !!!

1 Ответ

0 голосов
/ 03 октября 2018

Вам необходимо создать один или несколько экземпляров типа HeadObservation и передать их в ModflowHob.Пример с двумя точками наблюдения показан ниже.

# create a new hob object
obs_data = []

# observation location 1
tsd = [[1., 1.], [87163., 2.], [348649., 3.],
       [871621., 4.], [24439070., 5.], [24439072., 6.]]
names = ['o1.1', 'o1.2', 'o1.3', 'o1.4', 'o1.5', 'o1.6']
obs_data.append(flopy.modflow.HeadObservation(mf, layer=0, row=2, column=0,
                                              time_series_data=tsd,
                                              names=names, obsname='o1'))
# observation location 2
tsd = [[0., 126.938], [87163., 126.904], [871621., 126.382],
       [871718.5943, 115.357], [871893.7713, 112.782]]
names = ['o2.1', 'o2.2', 'o2.3', 'o2.4', 'o2.5']
obs_data.append(flopy.modflow.HeadObservation(mf, layer=0, row=3, column=3,
                                              time_series_data=tsd,
                                              names=names, obsname='o2'))
hob = flopy.modflow.ModflowHob(mf, iuhobsv=51, obs_data=obs_data)

Отправит проблему для обновления документации и строк документации.

...