def test_avg02(): """Make average map from Reek Eclipse.""" grd = Grid() grd.from_file(GFILE2, fformat="egrid") # get the poro po = GridProperty() po.from_file(IFILE2, fformat="init", name="PORO", grid=grd) # get the dz and the coordinates dz = grd.get_dz(mask=False) xc, yc, _zc = grd.get_xyz(mask=False) # get actnum actnum = grd.get_actnum() # convert from masked numpy to ordinary xcuse = np.copy(xc.values3d) ycuse = np.copy(yc.values3d) dzuse = np.copy(dz.values3d) pouse = np.copy(po.values3d) # dz must be zero for undef cells dzuse[actnum.values3d < 0.5] = 0.0 pouse[actnum.values3d < 0.5] = 0.0 # make a map... estimate from xc and yc zuse = np.ones((xcuse.shape)) avgmap = RegularSurface( nx=200, ny=250, xinc=50, yinc=50, xori=457000, yori=5927000, values=np.zeros((200, 250)), ) avgmap.avg_from_3dprop( xprop=xcuse, yprop=ycuse, zoneprop=zuse, zone_minmax=(1, 1), mprop=pouse, dzprop=dzuse, truncate_le=None, ) # add the faults in plot fau = Polygons(FFILE1, fformat="zmap") fspec = {"faults": fau} avgmap.quickplot(filename="TMP/tmp_poro2.png", xlabelrotation=30, faults=fspec) avgmap.to_file("TMP/tmp.poro.gri", fformat="irap_ascii") logger.info(avgmap.values.mean()) assert avgmap.values.mean() == pytest.approx(0.1653, abs=0.01)
def test_avg03(): """Make average map from Reek Eclipse, speed up by zone_avg.""" g = Grid() g.from_file(gfile2, fformat="egrid") # get the poro po = GridProperty() po.from_file(ifile2, fformat='init', name='PORO', grid=g) # get the dz and the coordinates dz = g.get_dz(mask=False) xc, yc, zc = g.get_xyz(mask=False) # get actnum actnum = g.get_actnum() actnum = actnum.get_npvalues3d() # convert from masked numpy to ordinary xcuse = xc.get_npvalues3d() ycuse = yc.get_npvalues3d() dzuse = dz.get_npvalues3d(fill_value=0.0) pouse = po.get_npvalues3d(fill_value=0.0) # dz must be zero for undef cells dzuse[actnum < 0.5] = 0.0 pouse[actnum < 0.5] = 0.0 # make a map... estimate from xc and yc zuse = np.ones((xcuse.shape)) avgmap = RegularSurface(nx=200, ny=250, xinc=50, yinc=50, xori=457000, yori=5927000, values=np.zeros((200, 250))) avgmap.avg_from_3dprop(xprop=xcuse, yprop=ycuse, zoneprop=zuse, zone_minmax=(1, 1), mprop=pouse, dzprop=dzuse, truncate_le=None, zone_avg=True) # add the faults in plot fau = Polygons(ffile1, fformat='zmap') fspec = {'faults': fau} avgmap.quickplot(filename='TMP/tmp_poro3.png', xlabelrotation=30, faults=fspec) avgmap.to_file('TMP/tmp.poro3.gri', fformat='irap_ascii') logger.info(avgmap.values.mean()) assert avgmap.values.mean() == pytest.approx(0.1653, abs=0.01)
def test_hcpvfz1(): """HCPV thickness map.""" # It is important that input are pure numpies, not masked logger.info("Name is %s", __name__) grd = Grid() logger.info("Import roff...") grd.from_file(ROFF1_GRID, fformat="roff") # get the hcpv st = GridProperty() to = GridProperty() st.from_file(ROFF1_PROPS, name="Oil_HCPV") to.from_file(ROFF1_PROPS, name="Oil_bulk") # get the dz and the coordinates, with no mask (ie get value for outside) dz = grd.get_dz(mask=False) xc, yc, _zc = grd.get_xyz(mask=False) xcv = ma.filled(xc.values3d) ycv = ma.filled(yc.values3d) dzv = ma.filled(dz.values3d) hcpfz = ma.filled(st.values3d, fill_value=0.0) tov = ma.filled(to.values3d, fill_value=10) tov[tov < 1.0e-32] = 1.0e-32 hcpfz = hcpfz * dzv / tov # make a map... estimate from xc and yc xmin = xcv.min() xmax = xcv.max() ymin = ycv.min() ymax = ycv.max() xinc = (xmax - xmin) / 50 yinc = (ymax - ymin) / 50 logger.debug( "xmin xmax ymin ymax, xinc, yinc: %s %s %s %s %s %s", xmin, xmax, ymin, ymax, xinc, yinc, ) hcmap = RegularSurface( nx=50, ny=50, xinc=xinc, yinc=yinc, xori=xmin, yori=ymin, values=np.zeros((50, 50)), ) hcmap2 = RegularSurface( nx=50, ny=50, xinc=xinc, yinc=yinc, xori=xmin, yori=ymin, values=np.zeros((50, 50)), ) zp = np.ones((grd.ncol, grd.nrow, grd.nlay)) # now make hcpf map t1 = xtg.timer() hcmap.hc_thickness_from_3dprops( xprop=xcv, yprop=ycv, dzprop=dzv, hcpfzprop=hcpfz, zoneprop=zp, zone_minmax=(1, 1), ) assert hcmap.values.mean() == pytest.approx(1.447, abs=0.1) t2 = xtg.timer(t1) logger.info("Speed basic is %s", t2) t1 = xtg.timer() hcmap2.hc_thickness_from_3dprops( xprop=xcv, yprop=ycv, dzprop=dzv, hcpfzprop=hcpfz, zoneprop=zp, coarsen=2, zone_avg=True, zone_minmax=(1, 1), mask_outside=True, ) t2 = xtg.timer(t1) logger.info("Speed zoneavg coarsen 2 is %s", t2) hcmap.quickplot(filename="TMP/quickplot_hcpv.png") hcmap2.quickplot(filename="TMP/quickplot_hcpv_zavg_coarsen.png") logger.debug(hcmap.values.mean())