Module pypestutils.ctypes_declarations
Low-level Fortran-Python ctypes functions.
Expand source code
"""Low-level Fortran-Python ctypes functions."""
from __future__ import annotations
from ctypes import ARRAY, CDLL, POINTER, c_char, c_double, c_int
from numpy.ctypeslib import ndpointer
# Cache variables by uppercase dimvar name
_dimvar_cache = {}
_char_array_cache = {}
# other lengths not defined in dimvar
_misc_lengths = {
"LENVARTYPE": 17,
"LENFLOWTYPE": 17,
}
def get_dimvar_int(lib: CDLL, name: str) -> int:
"""Get dimvar constant integer from library instance.
Parameters
----------
lib : CDLL
Ctypes library instance.
name : str
Uppercase name of variable in dimvar or other custom name.
Returns
-------
int
Raises
------
ValueError
If name is not defined in lib object.
"""
if name in _dimvar_cache:
return _dimvar_cache[name]
elif name in _misc_lengths:
# Special consideration for constants not specified by dimvar
return _misc_lengths[name]
c_var = c_int.in_dll(lib, name)
_dimvar_cache[name] = c_var.value
return c_var.value
def get_char_array(lib: CDLL, name: str):
"""Get c_char Array with a fixed size from dimvar.
Parameters
----------
lib : CDLL
Ctypes library instance.
name : str
Uppercase name of variable in dimvar or other custom name.
"""
if name in _char_array_cache:
return _char_array_cache[name]
size = get_dimvar_int(lib, name)
array_type = ARRAY(c_char, size)
_char_array_cache[name] = array_type
return array_type
def prototype(lib) -> None:
"""Add ctypes prototypes for each function in pestutils.
Parameters
----------
lib : CDLL
Ctypes library instance, which is modified in-place
"""
# Generate c_char Array types based on dimvar sizes
filename_t = get_char_array(lib, "LENFILENAME")
message_t = get_char_array(lib, "LENMESSAGE")
gridname_t = get_char_array(lib, "LENGRIDNAME")
vartype_t = get_char_array(lib, "LENVARTYPE")
flowtype_t = get_char_array(lib, "LENFLOWTYPE")
# inquire_modflow_binary_file_specs(
# filein,fileout,isim,itype,iprec,narray,ntime)
lib.inquire_modflow_binary_file_specs.argtypes = (
POINTER(filename_t), # filein, in
POINTER(filename_t), # fileout, in
POINTER(c_int), # isim, in
POINTER(c_int), # itype, in
POINTER(c_int), # iprec, out
POINTER(c_int), # narray, out
POINTER(c_int), # ntime, out
)
lib.inquire_modflow_binary_file_specs.restype = c_int
# retrieve_error_message(errormessage)
lib.retrieve_error_message.argtypes = (POINTER(message_t),) # errormessage, out
lib.retrieve_error_message.restype = c_int
# install_structured_grid(
# gridname,ncol,nrow,nlay,icorner,e0,n0,rotation,delr,delc)
lib.install_structured_grid.argtypes = (
POINTER(gridname_t), # gridname, in
POINTER(c_int), # ncol, in
POINTER(c_int), # nrow, in
POINTER(c_int), # nlay, in
POINTER(c_int), # icorner, in
POINTER(c_double), # e0, in
POINTER(c_double), # n0, in
POINTER(c_double), # rotation, in
ndpointer(c_double, ndim=1, flags="F"), # delr(ncol), in
ndpointer(c_double, ndim=1, flags="F"), # delc(nrow), in
)
lib.install_structured_grid.restype = c_int
# get_cell_centres_structured(gridname,ncpl,cellx,celly)
lib.get_cell_centres_structured.argtypes = (
POINTER(gridname_t), # gridname, in
POINTER(c_int), # ncpl, in
ndpointer(c_double, ndim=1, flags=("F", "W")), # cellx(ncells), out
ndpointer(c_double, ndim=1, flags=("F", "W")), # celly(ncells), out
)
lib.get_cell_centres_structured.restype = c_int
# uninstall_structured_grid(gridname)
lib.uninstall_structured_grid.argtypes = (POINTER(gridname_t),) # gridname, in
lib.uninstall_structured_grid.restype = c_int
# free_all_memory()
lib.free_all_memory.argtypes = ()
lib.free_all_memory.restype = c_int
# interp_from_structured_grid(
# gridname,depvarfile,isim,iprec,ntime,vartype,interpthresh,nointerpval,
# npts,ecoord,ncoord,layer,nproctime,simtime,simstate)
lib.interp_from_structured_grid.argtypes = (
POINTER(gridname_t), # gridname, in
POINTER(filename_t), # depvarfile, in
POINTER(c_int), # isim, in
POINTER(c_int), # iprec, in
POINTER(c_int), # ntime, in
POINTER(vartype_t), # vartype, in
POINTER(c_double), # interpthresh, in
POINTER(c_double), # nointerpval, in
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecoord, in
ndpointer(c_double, ndim=1, flags="F"), # ncoord, in
ndpointer(c_int, ndim=1, flags="F"), # layer, in
POINTER(c_int), # nproctime, out
ndpointer(c_double, ndim=1, flags=("F", "W")), # simtime(ntime), out
ndpointer(c_double, ndim=2, flags=("F", "W")), # simstate(ntime,npts), out
)
lib.interp_from_structured_grid.restype = c_int
# interp_to_obstime(
# nsimtime,nproctime,npts,simtime,simval,interpthresh,how_extrap,
# time_extrap,nointerpval,nobs,obspoint,obstime,obssimval)
lib.interp_to_obstime.argtypes = (
POINTER(c_int), # nsimtime, in
POINTER(c_int), # nproctime, in
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # simtime(nsimtime), in
ndpointer(c_double, ndim=2, flags="F"), # simval(nsimtime,npts), in
POINTER(c_double), # interpthresh, in
POINTER(c_char), # how_extrap, in
POINTER(c_double), # time_extrap, in
POINTER(c_double), # nointerpval, in
POINTER(c_int), # nobs, in
ndpointer(c_int, ndim=1, flags="F"), # obspoint(nobs), in
ndpointer(c_double, ndim=1, flags="F"), # obstime(nobs), in
ndpointer(c_double, ndim=1, flags=("F", "W")), # obssimval(nobs), out
)
lib.interp_to_obstime.restype = c_int
# install_mf6_grid_from_file(
# gridname,grbfile,idis,ncells,ndim1,ndim2,ndim3)
lib.install_mf6_grid_from_file.argtypes = (
POINTER(gridname_t), # gridname, in
POINTER(filename_t), # grbfile, in
POINTER(c_int), # idis, out
POINTER(c_int), # ncells, out
POINTER(c_int), # ndim1, out
POINTER(c_int), # ndim2, out
POINTER(c_int), # ndim3, out
)
lib.install_mf6_grid_from_file.restype = c_int
# get_cell_centres_mf6(gridname,ncells,cellx,celly,cellz)
lib.get_cell_centres_mf6.argtypes = (
POINTER(gridname_t), # gridname, in
POINTER(c_int), # ncells, in
ndpointer(c_double, ndim=1, flags=("F", "W")), # cellx(ncells), out
ndpointer(c_double, ndim=1, flags=("F", "W")), # celly(ncells), out
ndpointer(c_double, ndim=1, flags=("F", "W")), # cellz(ncells), out
)
lib.get_cell_centres_mf6.restype = c_int
# uninstall_mf6_grid(gridname)
lib.uninstall_mf6_grid.argtypes = (POINTER(gridname_t),) # gridname, in
lib.uninstall_mf6_grid.restype = c_int
# calc_mf6_interp_factors(
# gridname,npts,ecoord,ncoord,layer,factorfile,
# factorfiletype,blnfile,interp_success)
lib.calc_mf6_interp_factors.argtypes = (
POINTER(gridname_t), # gridname, in
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecoord, in
ndpointer(c_double, ndim=1, flags="F"), # ncoord, in
ndpointer(c_int, ndim=1, flags="F"), # layer, in
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(filename_t), # blnfile, in
ndpointer(c_int, ndim=1, flags=("F", "W")), # interp_success, out
)
lib.calc_mf6_interp_factors.restype = c_int
# interp_from_mf6_depvar_file(
# depvarfile,factorfile,factorfiletype,ntime,vartype,interpthresh,
# reapportion,nointerpval,npts,nproctime,simtime,simstate)
lib.interp_from_mf6_depvar_file.argtypes = (
POINTER(filename_t), # depvarfile, in
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # ntime, in
POINTER(vartype_t), # vartype(17), in
POINTER(c_double), # interpthresh, in
POINTER(c_int), # reapportion, in
POINTER(c_double), # nointerpval, in
POINTER(c_int), # npts, in
POINTER(c_int), # nproctime, out
ndpointer(c_double, ndim=1, flags=("F", "W")), # simtime(ntime), out
ndpointer(c_double, ndim=2, flags=("F", "W")), # simstate(ntime,npts), out
)
lib.interp_from_mf6_depvar_file.restype = c_int
# extract_flows_from_cbc_file(
# cbcfile,flowtype,isim,iprec,ncell,izone,nzone,numzone,zonenumber,
# ntime,nproctime,timestep,stressperiod,simtime,simflow)
lib.extract_flows_from_cbc_file.argtypes = (
POINTER(filename_t), # cbcfile, in
POINTER(flowtype_t), # flowtype, in
POINTER(c_int), # isim, in
POINTER(c_int), # iprec, in
POINTER(c_int), # ncell, in
ndpointer(c_int, ndim=1, flags="F"), # izone(ncell), in
POINTER(c_int), # nzone, in
POINTER(c_int), # numzone, out
ndpointer(c_int, ndim=1, flags=("F", "W")), # zonenumber(nzone), out
POINTER(c_int), # ntime, in
POINTER(c_int), # nproctime, out
ndpointer(c_int, ndim=1, flags=("F", "W")), # timestep(ntime), out
ndpointer(c_int, ndim=1, flags=("F", "W")), # stressperiod(ntime), out
ndpointer(c_double, ndim=1, flags=("F", "W")), # simtime(ntime), out
ndpointer(c_double, ndim=2, flags=("F", "W")), # simflow(ntime,nzone), out
)
lib.extract_flows_from_cbc_file.restype = c_int
# calc_kriging_factors_2d(
# npts,ecs,ncs,zns,mpts,ect,nct,znt,vartype,krigtype,aa,anis,bearing,
# searchrad,maxpts,minpts,factorfile,factorfiletype,icount_interp)
lib.calc_kriging_factors_2d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in
POINTER(c_int), # mpts, in
ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in
ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in
POINTER(c_int), # vartype, in
POINTER(c_int), # krigtype, in
ndpointer(c_double, ndim=1, flags="F"), # aa(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # anis(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in
POINTER(c_double), # searchrad, in
POINTER(c_int), # maxpts, in
POINTER(c_int), # minpts, in
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # icount_interp, out
)
lib.calc_kriging_factors_2d.restype = c_int
# calc_kriging_factors_auto_2d(
# npts,ecs,ncs,zns,mpts,ect,nct,znt,krigtype,anis,bearing,
# factorfile,factorfiletype,icount_interp)
lib.calc_kriging_factors_auto_2d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in
POINTER(c_int), # mpts, in
ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in
ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in
POINTER(c_int), # krigtype, in
ndpointer(c_double, ndim=1, flags="F"), # anis(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # icount_interp, out
)
lib.calc_kriging_factors_auto_2d.restype = c_int
# calc_kriging_factors_3d(
# npts,ecs,ncs,zcs,zns,mpts,ect,nct,zct,znt,krigtype,nzone,zonenum,
# vartype,ahmax,ahmin,avert,bearing,dip,rake,srhmax,srhmin,srvert,
# maxpts,minpts,factorfile,factorfiletype,icount_interp)
lib.calc_kriging_factors_3d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # zcs(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in
POINTER(c_int), # mpts, in
ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # zct(mpts), in
ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in
POINTER(c_int), # krigtype, in
POINTER(c_int), # nzone, in
ndpointer(c_int, ndim=1, flags="F"), # zonenum(nzone), in
ndpointer(c_int, ndim=1, flags="F"), # vartype(nzone), in
ndpointer(c_double, ndim=1, flags="F"), # ahmax(nzone), in
ndpointer(c_double, ndim=1, flags="F"), # ahmin(nzone), in
ndpointer(c_double, ndim=1, flags="F"), # avert(nzone), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(nzone), in
ndpointer(c_double, ndim=1, flags="F"), # dip(nzone), in
ndpointer(c_double, ndim=1, flags="F"), # rake(nzone), in
POINTER(c_double), # srhmax, in
POINTER(c_double), # srhmin, in
POINTER(c_double), # srvert, in
POINTER(c_int), # maxpts, in
POINTER(c_int), # minpts, in
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # icount_interp, out
)
lib.calc_kriging_factors_3d.restype = c_int
# krige_using_file(
# factorfile,factorfiletype,npts,mpts,krigtype,transtype,
# sourceval,targval,icount_interp,meanval)
lib.krige_using_file.argtypes = (
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # npts, in
POINTER(c_int), # mpts, in
POINTER(c_int), # krigtype, in
POINTER(c_int), # transtype, in
ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in
ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), out
POINTER(c_int), # icount_interp, out
ndpointer(c_double, ndim=1, flags="F"), # meanval(mpts), in, optional
)
lib.krige_using_file.restype = c_int
# build_covar_matrix_2d(
# npts,ec,nc,zn,vartype,nugget,aa,sill,anis,bearing,ldcovmat,covmat)
lib.build_covar_matrix_2d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ec(npts), in
ndpointer(c_double, ndim=1, flags="F"), # nc(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zn(npts), in
POINTER(c_int), # vartype, in
ndpointer(c_double, ndim=1, flags="F"), # nugget(npts), in
ndpointer(c_double, ndim=1, flags="F"), # aa(npts), in
ndpointer(c_double, ndim=1, flags="F"), # sill(npts), in
ndpointer(c_double, ndim=1, flags="F"), # anis(npts), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(npts), in
POINTER(c_int), # ldcovmat, in
ndpointer(c_double, ndim=2, flags=("F", "W")), # covmat(ldcovmat,npts), out
)
lib.build_covar_matrix_2d.restype = c_int
# build_covar_matrix_3d(
# npts,ec,nc,zc,zn,vartype,
# nugget,sill,ahmax,ahmin,avert,bearing,dip,rake,ldcovmat,covmat)
lib.build_covar_matrix_3d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ec(npts), in
ndpointer(c_double, ndim=1, flags="F"), # nc(npts), in
ndpointer(c_double, ndim=1, flags="F"), # zc(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zn(npts), in
POINTER(c_int), # vartype, in
ndpointer(c_double, ndim=1, flags="F"), # nugget(npts), in
ndpointer(c_double, ndim=1, flags="F"), # sill(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ahmax(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ahmin(npts), in
ndpointer(c_double, ndim=1, flags="F"), # avert(npts), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(npts), in
ndpointer(c_double, ndim=1, flags="F"), # dip(npts), in
ndpointer(c_double, ndim=1, flags="F"), # rake(npts), in
POINTER(c_int), # ldcovmat, in
ndpointer(c_double, ndim=2, flags=("F", "W")), # covmat(ldcovmat,npts), out
)
lib.build_covar_matrix_3d.restype = c_int
# calc_structural_overlay_factors(
# npts,ecs,ncs,ids,conwidth,aa,structype,inverse_power,
# mpts,ect,nct,active,factorfile,factorfiletype,icount_interp)
lib.calc_structural_overlay_factors.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in
ndpointer(c_int, ndim=1, flags="F"), # ids(npts), in
ndpointer(c_double, ndim=1, flags="F"), # conwidth(npts), in
ndpointer(c_double, ndim=1, flags="F"), # aa(npts), in
POINTER(c_int), # structype, in
POINTER(c_double), # inverse_power, in
POINTER(c_int), # mpts, in
ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in
ndpointer(c_int, ndim=1, flags="F"), # active(mpts), in
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # icount_interp, out
)
lib.calc_structural_overlay_factors.restype = c_int
# interpolate_blend_using_file(
# factorfile,factorfiletype,npts,mpts,transtype,
# lt_target,gt_target,sourceval,targval,icount_interp)
lib.interpolate_blend_using_file.argtypes = (
POINTER(filename_t), # factorfile, in
POINTER(c_int), # factorfiletype, in
POINTER(c_int), # npts, in
POINTER(c_int), # mpts, in
POINTER(c_int), # transtype, in
POINTER(c_char), # lt_target, in
POINTER(c_char), # gt_target, in
ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in
ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), inout
POINTER(c_int), # icount_interp, out
)
lib.interpolate_blend_using_file.restype = c_int
# ipd_interpolate_2d(npts,ecs,ncs,zns,sourceval,
# mpts,ect,nct,znt,targval,transtype,anis,bearing,invpow)
lib.ipd_interpolate_2d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in
ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in
POINTER(c_int), # mpts, in
ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in
ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in
ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), out
POINTER(c_int), # transtype, in
ndpointer(c_double, ndim=1, flags="F"), # anis(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # invpow(mpts), in
)
lib.ipd_interpolate_2d.restype = c_int
# ipd_interpolate_3d(npts,ecs,ncs,zcs,zns,sourceval,mpts,ect,nct,zct,znt,
# targval,transtype,ahmax,ahmin,avert,bearing,dip,rake,invpow)
lib.ipd_interpolate_3d.argtypes = (
POINTER(c_int), # npts, in
ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in
ndpointer(c_double, ndim=1, flags="F"), # zcs(npts), in
ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in
ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in
POINTER(c_int), # mpts, in
ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # zct(mpts), in
ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in
ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), out
POINTER(c_int), # transtype, in
ndpointer(c_double, ndim=1, flags="F"), # ahmax(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # ahmin(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # avert(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # dip(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # rake(mpts), in
ndpointer(c_double, ndim=1, flags="F"), # invpow(mpts), in
)
lib.ipd_interpolate_3d.restype = c_int
# initialize_randgen(iseed)
lib.initialize_randgen.argtypes = (POINTER(c_int),) # iseed, in
lib.initialize_randgen.restype = c_int
# fieldgen2d_sva(
# nnode,ec,nc,area,active,mean,var,aa,anis,bearing,
# transtype,avetype,power,ldrand,nreal,randfield)
lib.fieldgen2d_sva.argtypes = (
POINTER(c_int), # nnode, in
ndpointer(c_double, ndim=1, flags="F"), # ec(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # nc(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # area(nnode), in
ndpointer(c_int, ndim=1, flags="F"), # active(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # mean(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # var(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # aa(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # anis(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(nnode), in
POINTER(c_int), # transtype, in
POINTER(c_int), # avetype, in
POINTER(c_double), # power, in
POINTER(c_int), # ldrand, in
POINTER(c_int), # nreal, in
ndpointer(c_double, ndim=2, flags=("F", "W")), # randfield(ldrand,nreal), out
)
lib.fieldgen2d_sva.restype = c_int
# fieldgen3d_sva(
# nnode,ec,nc,zc,area,height,active,mean,var,ahmax,ahmin,avert,
# bearing,dip,rake,transtype,avetype,power,ldrand,nreal,randfield)
lib.fieldgen3d_sva.argtypes = (
POINTER(c_int), # nnode, in
ndpointer(c_double, ndim=1, flags="F"), # ec(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # nc(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # zc(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # area(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # height(nnode), in
ndpointer(c_int, ndim=1, flags="F"), # active(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # mean(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # var(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # ahmax(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # ahmin(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # avert(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # bearing(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # dip(nnode), in
ndpointer(c_double, ndim=1, flags="F"), # rake(nnode), in
POINTER(c_int), # transtype, in
POINTER(c_int), # avetype, in
POINTER(c_double), # power, in
POINTER(c_int), # ldrand, in
POINTER(c_int), # nreal, in
ndpointer(c_double, ndim=2, flags=("F", "W")), # randfield(ldrand,nreal), out
)
lib.fieldgen3d_sva.restype = c_int
Functions
def get_char_array(lib: CDLL, name: str)
-
Get c_char Array with a fixed size from dimvar.
Parameters
lib
:CDLL
- Ctypes library instance.
name
:str
- Uppercase name of variable in dimvar or other custom name.
Expand source code
def get_char_array(lib: CDLL, name: str): """Get c_char Array with a fixed size from dimvar. Parameters ---------- lib : CDLL Ctypes library instance. name : str Uppercase name of variable in dimvar or other custom name. """ if name in _char_array_cache: return _char_array_cache[name] size = get_dimvar_int(lib, name) array_type = ARRAY(c_char, size) _char_array_cache[name] = array_type return array_type
def get_dimvar_int(lib: CDLL, name: str) ‑> int
-
Get dimvar constant integer from library instance.
Parameters
lib
:CDLL
- Ctypes library instance.
name
:str
- Uppercase name of variable in dimvar or other custom name.
Returns
int
Raises
ValueError
- If name is not defined in lib object.
Expand source code
def get_dimvar_int(lib: CDLL, name: str) -> int: """Get dimvar constant integer from library instance. Parameters ---------- lib : CDLL Ctypes library instance. name : str Uppercase name of variable in dimvar or other custom name. Returns ------- int Raises ------ ValueError If name is not defined in lib object. """ if name in _dimvar_cache: return _dimvar_cache[name] elif name in _misc_lengths: # Special consideration for constants not specified by dimvar return _misc_lengths[name] c_var = c_int.in_dll(lib, name) _dimvar_cache[name] = c_var.value return c_var.value
def prototype(lib) ‑> None
-
Add ctypes prototypes for each function in pestutils.
Parameters
lib
:CDLL
- Ctypes library instance, which is modified in-place
Expand source code
def prototype(lib) -> None: """Add ctypes prototypes for each function in pestutils. Parameters ---------- lib : CDLL Ctypes library instance, which is modified in-place """ # Generate c_char Array types based on dimvar sizes filename_t = get_char_array(lib, "LENFILENAME") message_t = get_char_array(lib, "LENMESSAGE") gridname_t = get_char_array(lib, "LENGRIDNAME") vartype_t = get_char_array(lib, "LENVARTYPE") flowtype_t = get_char_array(lib, "LENFLOWTYPE") # inquire_modflow_binary_file_specs( # filein,fileout,isim,itype,iprec,narray,ntime) lib.inquire_modflow_binary_file_specs.argtypes = ( POINTER(filename_t), # filein, in POINTER(filename_t), # fileout, in POINTER(c_int), # isim, in POINTER(c_int), # itype, in POINTER(c_int), # iprec, out POINTER(c_int), # narray, out POINTER(c_int), # ntime, out ) lib.inquire_modflow_binary_file_specs.restype = c_int # retrieve_error_message(errormessage) lib.retrieve_error_message.argtypes = (POINTER(message_t),) # errormessage, out lib.retrieve_error_message.restype = c_int # install_structured_grid( # gridname,ncol,nrow,nlay,icorner,e0,n0,rotation,delr,delc) lib.install_structured_grid.argtypes = ( POINTER(gridname_t), # gridname, in POINTER(c_int), # ncol, in POINTER(c_int), # nrow, in POINTER(c_int), # nlay, in POINTER(c_int), # icorner, in POINTER(c_double), # e0, in POINTER(c_double), # n0, in POINTER(c_double), # rotation, in ndpointer(c_double, ndim=1, flags="F"), # delr(ncol), in ndpointer(c_double, ndim=1, flags="F"), # delc(nrow), in ) lib.install_structured_grid.restype = c_int # get_cell_centres_structured(gridname,ncpl,cellx,celly) lib.get_cell_centres_structured.argtypes = ( POINTER(gridname_t), # gridname, in POINTER(c_int), # ncpl, in ndpointer(c_double, ndim=1, flags=("F", "W")), # cellx(ncells), out ndpointer(c_double, ndim=1, flags=("F", "W")), # celly(ncells), out ) lib.get_cell_centres_structured.restype = c_int # uninstall_structured_grid(gridname) lib.uninstall_structured_grid.argtypes = (POINTER(gridname_t),) # gridname, in lib.uninstall_structured_grid.restype = c_int # free_all_memory() lib.free_all_memory.argtypes = () lib.free_all_memory.restype = c_int # interp_from_structured_grid( # gridname,depvarfile,isim,iprec,ntime,vartype,interpthresh,nointerpval, # npts,ecoord,ncoord,layer,nproctime,simtime,simstate) lib.interp_from_structured_grid.argtypes = ( POINTER(gridname_t), # gridname, in POINTER(filename_t), # depvarfile, in POINTER(c_int), # isim, in POINTER(c_int), # iprec, in POINTER(c_int), # ntime, in POINTER(vartype_t), # vartype, in POINTER(c_double), # interpthresh, in POINTER(c_double), # nointerpval, in POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecoord, in ndpointer(c_double, ndim=1, flags="F"), # ncoord, in ndpointer(c_int, ndim=1, flags="F"), # layer, in POINTER(c_int), # nproctime, out ndpointer(c_double, ndim=1, flags=("F", "W")), # simtime(ntime), out ndpointer(c_double, ndim=2, flags=("F", "W")), # simstate(ntime,npts), out ) lib.interp_from_structured_grid.restype = c_int # interp_to_obstime( # nsimtime,nproctime,npts,simtime,simval,interpthresh,how_extrap, # time_extrap,nointerpval,nobs,obspoint,obstime,obssimval) lib.interp_to_obstime.argtypes = ( POINTER(c_int), # nsimtime, in POINTER(c_int), # nproctime, in POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # simtime(nsimtime), in ndpointer(c_double, ndim=2, flags="F"), # simval(nsimtime,npts), in POINTER(c_double), # interpthresh, in POINTER(c_char), # how_extrap, in POINTER(c_double), # time_extrap, in POINTER(c_double), # nointerpval, in POINTER(c_int), # nobs, in ndpointer(c_int, ndim=1, flags="F"), # obspoint(nobs), in ndpointer(c_double, ndim=1, flags="F"), # obstime(nobs), in ndpointer(c_double, ndim=1, flags=("F", "W")), # obssimval(nobs), out ) lib.interp_to_obstime.restype = c_int # install_mf6_grid_from_file( # gridname,grbfile,idis,ncells,ndim1,ndim2,ndim3) lib.install_mf6_grid_from_file.argtypes = ( POINTER(gridname_t), # gridname, in POINTER(filename_t), # grbfile, in POINTER(c_int), # idis, out POINTER(c_int), # ncells, out POINTER(c_int), # ndim1, out POINTER(c_int), # ndim2, out POINTER(c_int), # ndim3, out ) lib.install_mf6_grid_from_file.restype = c_int # get_cell_centres_mf6(gridname,ncells,cellx,celly,cellz) lib.get_cell_centres_mf6.argtypes = ( POINTER(gridname_t), # gridname, in POINTER(c_int), # ncells, in ndpointer(c_double, ndim=1, flags=("F", "W")), # cellx(ncells), out ndpointer(c_double, ndim=1, flags=("F", "W")), # celly(ncells), out ndpointer(c_double, ndim=1, flags=("F", "W")), # cellz(ncells), out ) lib.get_cell_centres_mf6.restype = c_int # uninstall_mf6_grid(gridname) lib.uninstall_mf6_grid.argtypes = (POINTER(gridname_t),) # gridname, in lib.uninstall_mf6_grid.restype = c_int # calc_mf6_interp_factors( # gridname,npts,ecoord,ncoord,layer,factorfile, # factorfiletype,blnfile,interp_success) lib.calc_mf6_interp_factors.argtypes = ( POINTER(gridname_t), # gridname, in POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecoord, in ndpointer(c_double, ndim=1, flags="F"), # ncoord, in ndpointer(c_int, ndim=1, flags="F"), # layer, in POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(filename_t), # blnfile, in ndpointer(c_int, ndim=1, flags=("F", "W")), # interp_success, out ) lib.calc_mf6_interp_factors.restype = c_int # interp_from_mf6_depvar_file( # depvarfile,factorfile,factorfiletype,ntime,vartype,interpthresh, # reapportion,nointerpval,npts,nproctime,simtime,simstate) lib.interp_from_mf6_depvar_file.argtypes = ( POINTER(filename_t), # depvarfile, in POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # ntime, in POINTER(vartype_t), # vartype(17), in POINTER(c_double), # interpthresh, in POINTER(c_int), # reapportion, in POINTER(c_double), # nointerpval, in POINTER(c_int), # npts, in POINTER(c_int), # nproctime, out ndpointer(c_double, ndim=1, flags=("F", "W")), # simtime(ntime), out ndpointer(c_double, ndim=2, flags=("F", "W")), # simstate(ntime,npts), out ) lib.interp_from_mf6_depvar_file.restype = c_int # extract_flows_from_cbc_file( # cbcfile,flowtype,isim,iprec,ncell,izone,nzone,numzone,zonenumber, # ntime,nproctime,timestep,stressperiod,simtime,simflow) lib.extract_flows_from_cbc_file.argtypes = ( POINTER(filename_t), # cbcfile, in POINTER(flowtype_t), # flowtype, in POINTER(c_int), # isim, in POINTER(c_int), # iprec, in POINTER(c_int), # ncell, in ndpointer(c_int, ndim=1, flags="F"), # izone(ncell), in POINTER(c_int), # nzone, in POINTER(c_int), # numzone, out ndpointer(c_int, ndim=1, flags=("F", "W")), # zonenumber(nzone), out POINTER(c_int), # ntime, in POINTER(c_int), # nproctime, out ndpointer(c_int, ndim=1, flags=("F", "W")), # timestep(ntime), out ndpointer(c_int, ndim=1, flags=("F", "W")), # stressperiod(ntime), out ndpointer(c_double, ndim=1, flags=("F", "W")), # simtime(ntime), out ndpointer(c_double, ndim=2, flags=("F", "W")), # simflow(ntime,nzone), out ) lib.extract_flows_from_cbc_file.restype = c_int # calc_kriging_factors_2d( # npts,ecs,ncs,zns,mpts,ect,nct,znt,vartype,krigtype,aa,anis,bearing, # searchrad,maxpts,minpts,factorfile,factorfiletype,icount_interp) lib.calc_kriging_factors_2d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in POINTER(c_int), # mpts, in ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in POINTER(c_int), # vartype, in POINTER(c_int), # krigtype, in ndpointer(c_double, ndim=1, flags="F"), # aa(mpts), in ndpointer(c_double, ndim=1, flags="F"), # anis(mpts), in ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in POINTER(c_double), # searchrad, in POINTER(c_int), # maxpts, in POINTER(c_int), # minpts, in POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # icount_interp, out ) lib.calc_kriging_factors_2d.restype = c_int # calc_kriging_factors_auto_2d( # npts,ecs,ncs,zns,mpts,ect,nct,znt,krigtype,anis,bearing, # factorfile,factorfiletype,icount_interp) lib.calc_kriging_factors_auto_2d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in POINTER(c_int), # mpts, in ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in POINTER(c_int), # krigtype, in ndpointer(c_double, ndim=1, flags="F"), # anis(mpts), in ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # icount_interp, out ) lib.calc_kriging_factors_auto_2d.restype = c_int # calc_kriging_factors_3d( # npts,ecs,ncs,zcs,zns,mpts,ect,nct,zct,znt,krigtype,nzone,zonenum, # vartype,ahmax,ahmin,avert,bearing,dip,rake,srhmax,srhmin,srvert, # maxpts,minpts,factorfile,factorfiletype,icount_interp) lib.calc_kriging_factors_3d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in ndpointer(c_double, ndim=1, flags="F"), # zcs(npts), in ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in POINTER(c_int), # mpts, in ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in ndpointer(c_double, ndim=1, flags="F"), # zct(mpts), in ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in POINTER(c_int), # krigtype, in POINTER(c_int), # nzone, in ndpointer(c_int, ndim=1, flags="F"), # zonenum(nzone), in ndpointer(c_int, ndim=1, flags="F"), # vartype(nzone), in ndpointer(c_double, ndim=1, flags="F"), # ahmax(nzone), in ndpointer(c_double, ndim=1, flags="F"), # ahmin(nzone), in ndpointer(c_double, ndim=1, flags="F"), # avert(nzone), in ndpointer(c_double, ndim=1, flags="F"), # bearing(nzone), in ndpointer(c_double, ndim=1, flags="F"), # dip(nzone), in ndpointer(c_double, ndim=1, flags="F"), # rake(nzone), in POINTER(c_double), # srhmax, in POINTER(c_double), # srhmin, in POINTER(c_double), # srvert, in POINTER(c_int), # maxpts, in POINTER(c_int), # minpts, in POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # icount_interp, out ) lib.calc_kriging_factors_3d.restype = c_int # krige_using_file( # factorfile,factorfiletype,npts,mpts,krigtype,transtype, # sourceval,targval,icount_interp,meanval) lib.krige_using_file.argtypes = ( POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # npts, in POINTER(c_int), # mpts, in POINTER(c_int), # krigtype, in POINTER(c_int), # transtype, in ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), out POINTER(c_int), # icount_interp, out ndpointer(c_double, ndim=1, flags="F"), # meanval(mpts), in, optional ) lib.krige_using_file.restype = c_int # build_covar_matrix_2d( # npts,ec,nc,zn,vartype,nugget,aa,sill,anis,bearing,ldcovmat,covmat) lib.build_covar_matrix_2d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ec(npts), in ndpointer(c_double, ndim=1, flags="F"), # nc(npts), in ndpointer(c_int, ndim=1, flags="F"), # zn(npts), in POINTER(c_int), # vartype, in ndpointer(c_double, ndim=1, flags="F"), # nugget(npts), in ndpointer(c_double, ndim=1, flags="F"), # aa(npts), in ndpointer(c_double, ndim=1, flags="F"), # sill(npts), in ndpointer(c_double, ndim=1, flags="F"), # anis(npts), in ndpointer(c_double, ndim=1, flags="F"), # bearing(npts), in POINTER(c_int), # ldcovmat, in ndpointer(c_double, ndim=2, flags=("F", "W")), # covmat(ldcovmat,npts), out ) lib.build_covar_matrix_2d.restype = c_int # build_covar_matrix_3d( # npts,ec,nc,zc,zn,vartype, # nugget,sill,ahmax,ahmin,avert,bearing,dip,rake,ldcovmat,covmat) lib.build_covar_matrix_3d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ec(npts), in ndpointer(c_double, ndim=1, flags="F"), # nc(npts), in ndpointer(c_double, ndim=1, flags="F"), # zc(npts), in ndpointer(c_int, ndim=1, flags="F"), # zn(npts), in POINTER(c_int), # vartype, in ndpointer(c_double, ndim=1, flags="F"), # nugget(npts), in ndpointer(c_double, ndim=1, flags="F"), # sill(npts), in ndpointer(c_double, ndim=1, flags="F"), # ahmax(npts), in ndpointer(c_double, ndim=1, flags="F"), # ahmin(npts), in ndpointer(c_double, ndim=1, flags="F"), # avert(npts), in ndpointer(c_double, ndim=1, flags="F"), # bearing(npts), in ndpointer(c_double, ndim=1, flags="F"), # dip(npts), in ndpointer(c_double, ndim=1, flags="F"), # rake(npts), in POINTER(c_int), # ldcovmat, in ndpointer(c_double, ndim=2, flags=("F", "W")), # covmat(ldcovmat,npts), out ) lib.build_covar_matrix_3d.restype = c_int # calc_structural_overlay_factors( # npts,ecs,ncs,ids,conwidth,aa,structype,inverse_power, # mpts,ect,nct,active,factorfile,factorfiletype,icount_interp) lib.calc_structural_overlay_factors.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in ndpointer(c_int, ndim=1, flags="F"), # ids(npts), in ndpointer(c_double, ndim=1, flags="F"), # conwidth(npts), in ndpointer(c_double, ndim=1, flags="F"), # aa(npts), in POINTER(c_int), # structype, in POINTER(c_double), # inverse_power, in POINTER(c_int), # mpts, in ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in ndpointer(c_int, ndim=1, flags="F"), # active(mpts), in POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # icount_interp, out ) lib.calc_structural_overlay_factors.restype = c_int # interpolate_blend_using_file( # factorfile,factorfiletype,npts,mpts,transtype, # lt_target,gt_target,sourceval,targval,icount_interp) lib.interpolate_blend_using_file.argtypes = ( POINTER(filename_t), # factorfile, in POINTER(c_int), # factorfiletype, in POINTER(c_int), # npts, in POINTER(c_int), # mpts, in POINTER(c_int), # transtype, in POINTER(c_char), # lt_target, in POINTER(c_char), # gt_target, in ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), inout POINTER(c_int), # icount_interp, out ) lib.interpolate_blend_using_file.restype = c_int # ipd_interpolate_2d(npts,ecs,ncs,zns,sourceval, # mpts,ect,nct,znt,targval,transtype,anis,bearing,invpow) lib.ipd_interpolate_2d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in POINTER(c_int), # mpts, in ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), out POINTER(c_int), # transtype, in ndpointer(c_double, ndim=1, flags="F"), # anis(mpts), in ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in ndpointer(c_double, ndim=1, flags="F"), # invpow(mpts), in ) lib.ipd_interpolate_2d.restype = c_int # ipd_interpolate_3d(npts,ecs,ncs,zcs,zns,sourceval,mpts,ect,nct,zct,znt, # targval,transtype,ahmax,ahmin,avert,bearing,dip,rake,invpow) lib.ipd_interpolate_3d.argtypes = ( POINTER(c_int), # npts, in ndpointer(c_double, ndim=1, flags="F"), # ecs(npts), in ndpointer(c_double, ndim=1, flags="F"), # ncs(npts), in ndpointer(c_double, ndim=1, flags="F"), # zcs(npts), in ndpointer(c_int, ndim=1, flags="F"), # zns(npts), in ndpointer(c_double, ndim=1, flags="F"), # sourceval(npts), in POINTER(c_int), # mpts, in ndpointer(c_double, ndim=1, flags="F"), # ect(mpts), in ndpointer(c_double, ndim=1, flags="F"), # nct(mpts), in ndpointer(c_double, ndim=1, flags="F"), # zct(mpts), in ndpointer(c_int, ndim=1, flags="F"), # znt(mpts), in ndpointer(c_double, ndim=1, flags=("F", "W")), # targval(mpts), out POINTER(c_int), # transtype, in ndpointer(c_double, ndim=1, flags="F"), # ahmax(mpts), in ndpointer(c_double, ndim=1, flags="F"), # ahmin(mpts), in ndpointer(c_double, ndim=1, flags="F"), # avert(mpts), in ndpointer(c_double, ndim=1, flags="F"), # bearing(mpts), in ndpointer(c_double, ndim=1, flags="F"), # dip(mpts), in ndpointer(c_double, ndim=1, flags="F"), # rake(mpts), in ndpointer(c_double, ndim=1, flags="F"), # invpow(mpts), in ) lib.ipd_interpolate_3d.restype = c_int # initialize_randgen(iseed) lib.initialize_randgen.argtypes = (POINTER(c_int),) # iseed, in lib.initialize_randgen.restype = c_int # fieldgen2d_sva( # nnode,ec,nc,area,active,mean,var,aa,anis,bearing, # transtype,avetype,power,ldrand,nreal,randfield) lib.fieldgen2d_sva.argtypes = ( POINTER(c_int), # nnode, in ndpointer(c_double, ndim=1, flags="F"), # ec(nnode), in ndpointer(c_double, ndim=1, flags="F"), # nc(nnode), in ndpointer(c_double, ndim=1, flags="F"), # area(nnode), in ndpointer(c_int, ndim=1, flags="F"), # active(nnode), in ndpointer(c_double, ndim=1, flags="F"), # mean(nnode), in ndpointer(c_double, ndim=1, flags="F"), # var(nnode), in ndpointer(c_double, ndim=1, flags="F"), # aa(nnode), in ndpointer(c_double, ndim=1, flags="F"), # anis(nnode), in ndpointer(c_double, ndim=1, flags="F"), # bearing(nnode), in POINTER(c_int), # transtype, in POINTER(c_int), # avetype, in POINTER(c_double), # power, in POINTER(c_int), # ldrand, in POINTER(c_int), # nreal, in ndpointer(c_double, ndim=2, flags=("F", "W")), # randfield(ldrand,nreal), out ) lib.fieldgen2d_sva.restype = c_int # fieldgen3d_sva( # nnode,ec,nc,zc,area,height,active,mean,var,ahmax,ahmin,avert, # bearing,dip,rake,transtype,avetype,power,ldrand,nreal,randfield) lib.fieldgen3d_sva.argtypes = ( POINTER(c_int), # nnode, in ndpointer(c_double, ndim=1, flags="F"), # ec(nnode), in ndpointer(c_double, ndim=1, flags="F"), # nc(nnode), in ndpointer(c_double, ndim=1, flags="F"), # zc(nnode), in ndpointer(c_double, ndim=1, flags="F"), # area(nnode), in ndpointer(c_double, ndim=1, flags="F"), # height(nnode), in ndpointer(c_int, ndim=1, flags="F"), # active(nnode), in ndpointer(c_double, ndim=1, flags="F"), # mean(nnode), in ndpointer(c_double, ndim=1, flags="F"), # var(nnode), in ndpointer(c_double, ndim=1, flags="F"), # ahmax(nnode), in ndpointer(c_double, ndim=1, flags="F"), # ahmin(nnode), in ndpointer(c_double, ndim=1, flags="F"), # avert(nnode), in ndpointer(c_double, ndim=1, flags="F"), # bearing(nnode), in ndpointer(c_double, ndim=1, flags="F"), # dip(nnode), in ndpointer(c_double, ndim=1, flags="F"), # rake(nnode), in POINTER(c_int), # transtype, in POINTER(c_int), # avetype, in POINTER(c_double), # power, in POINTER(c_int), # ldrand, in POINTER(c_int), # nreal, in ndpointer(c_double, ndim=2, flags=("F", "W")), # randfield(ldrand,nreal), out ) lib.fieldgen3d_sva.restype = c_int