def _export_roff_discrete(self, pfile, name, append=False, last=True, binary=True): carray = _gridprop_lowlevel.update_carray(self, undef=-999) ptr_idum = _cxtgeo.new_intpointer() ptr_ddum = _cxtgeo.new_doublepointer() # codes: ptr_codes = _cxtgeo.new_intarray(256) ncodes = self.ncodes codenames = "" logger.info("Keys: %s", self.codes.keys()) for inum, ckey in enumerate(sorted(self.codes.keys())): if ckey is not None: codenames += str(self.codes[ckey]) codenames += "|" _cxtgeo.intarray_setitem(ptr_codes, inum, int(ckey)) else: logger.warning("For some odd reason, None is a key. Check!") mode = 0 if not binary: mode = 1 if not append: _cxtgeo.grd3d_export_roff_pstart(mode, self._ncol, self._nrow, self._nlay, pfile, XTGDEBUG) nsub = 0 isub_to_export = 0 _cxtgeo.grd3d_export_roff_prop( mode, self._ncol, self._nrow, self._nlay, nsub, isub_to_export, ptr_idum, name, "int", carray, ptr_ddum, ncodes, codenames, ptr_codes, pfile, XTGDEBUG, ) if last: _cxtgeo.grd3d_export_roff_end(mode, pfile, XTGDEBUG) _gridprop_lowlevel.delete_carray(self, carray)
def export_grdecl(self, pfile, name, append=False, binary=False, dtype=None): logger.info("Exporting %s to file %s, GRDECL format", name, pfile) if dtype is None: if self._isdiscrete: dtype = "int32" else: dtype = "float32" carray = _gridprop_lowlevel.update_carray(self, dtype=dtype) iarr = _cxtgeo.new_intpointer() farr = _cxtgeo.new_floatpointer() darr = _cxtgeo.new_doublepointer() if "double" in str(carray): ptype = 3 darr = carray elif "float" in str(carray): ptype = 2 farr = carray else: ptype = 1 iarr = carray mode = 0 if not binary: mode = 1 appendmode = 0 if append: appendmode = 1 _cxtgeo.grd3d_export_grdeclprop2( self._ncol, self._nrow, self._nlay, ptype, iarr, farr, darr, self.name, pfile, mode, appendmode, XTGDEBUG, ) _gridprop_lowlevel.delete_carray(self, carray)
def _export_roff_continuous(self, pfile, name, append=False, last=True, binary=True): carray = _gridprop_lowlevel.update_carray(self, undef=-999.0) ptr_idum = _cxtgeo.new_intpointer() mode = 0 if not binary: mode = 1 if not append: _cxtgeo.grd3d_export_roff_pstart(mode, self._ncol, self._nrow, self._nlay, pfile, XTGDEBUG) # now the actual data nsub = 0 isub_to_export = 0 _cxtgeo.grd3d_export_roff_prop( mode, self._ncol, self._nrow, self._nlay, nsub, isub_to_export, ptr_idum, name, "double", ptr_idum, carray, 0, "", ptr_idum, pfile, XTGDEBUG, ) if last: _cxtgeo.grd3d_export_roff_end(mode, pfile, XTGDEBUG) _gridprop_lowlevel.delete_carray(self, carray)
def make_hybridgrid(grid, **kwargs): """Make hybrid grid. It changes the grid geometry status of the object. Input: grid (object): A grid object TODO region (object): A region parameter (property object) etc... """ nhdiv = kwargs.get("nhdiv") toplevel = kwargs.get("toplevel") bottomlevel = kwargs.get("bottomlevel") region = kwargs.get("region", None) region_number = kwargs.get("region_number", None) logger.debug("nhdiv: %s", nhdiv) logger.debug("toplevel: %s", toplevel) logger.debug("bottomlevel: %s", bottomlevel) logger.debug("region: %s", region) logger.debug("region_number: %s", region_number) xtg_verbose_level = xtg.syslevel newnlay = grid.nlay * 2 + nhdiv hyb_num_act = _cxtgeo.new_intpointer() hyb_p_zcorn_v = _cxtgeo.new_doublearray(grid.ncol * grid.nrow * (newnlay + 1) * 4) hyb_p_actnum_v = _cxtgeo.new_intarray(grid.ncol * grid.nrow * newnlay) if region is None: _cxtgeo.grd3d_convert_hybrid( grid.ncol, grid.nrow, grid.nlay, grid._p_coord_v, grid._p_zcorn_v, grid._p_actnum_v, newnlay, hyb_p_zcorn_v, hyb_p_actnum_v, hyb_num_act, toplevel, bottomlevel, nhdiv, xtg_verbose_level, ) else: region.discrete_to_continuous() carray_reg = _gridprop_lowlevel.update_carray(region) _cxtgeo.grd3d_convert_hybrid2( grid.ncol, grid.nrow, grid.nlay, grid._p_coord_v, grid._p_zcorn_v, grid._p_actnum_v, newnlay, hyb_p_zcorn_v, hyb_p_actnum_v, hyb_num_act, toplevel, bottomlevel, nhdiv, carray_reg, region_number, xtg_verbose_level, ) _gridprop_lowlevel.delete_carray(region, carray_reg) grid._nlay = newnlay grid._p_zcorn_v = hyb_p_zcorn_v grid._p_actnum_v = hyb_p_actnum_v return grid