def make_overburden(memsize=100, grid_par=None, noise_par=None, taper_par=None): noise_grid_par = grid_par.copy() noise_grid_par['nx'] = grid_par['nx'] + 2 * grid_par['xy_pad'] noise_grid_par['ny'] = grid_par['ny'] + 2 * grid_par['xy_pad'] # Make sand fraction grid grid = ''' n1=%(nx)d d1=%(dx)g o1=0 n2=%(ny)d d2=%(dy)g o2=0 n3=%(nz)d d3=%(dz)g o3=0 ''' % (noise_grid_par) Flow('ovr_sand_xypad', '', 'math' + grid + 'output="0"', stdin=0) # Make shale and porosity make_shale_and_phi('ovr_') # Make correlated random fields real_par = {'name': 'ovr_bk_', 'nr': 1, 'seed': 1} rfield.rfield(real_par, noise_grid_par, noise_par) # Add correlated noise to the porosity add_noise_overburden('ovr_', noise_par['std_dev']) # Make density and sonic velocities make_rho_and_vel('ovr_') # Apply top & bottom tapers to the property arrays apply_taper('ovr_', memsize, noise_grid_par, taper_par)
def make_overburden (memsize=100, grid_par=None, noise_par=None, taper_par=None): noise_grid_par = grid_par.copy() noise_grid_par['nx'] = grid_par['nx']+2*grid_par['xy_pad'] noise_grid_par['ny'] = grid_par['ny']+2*grid_par['xy_pad'] # Make sand fraction grid grid = ''' n1=%(nx)d d1=%(dx)g o1=0 n2=%(ny)d d2=%(dy)g o2=0 n3=%(nz)d d3=%(dz)g o3=0 ''' % (noise_grid_par) Flow ('ovr_sand_xypad','','math'+grid+'output="0"',stdin=0) # Make shale and porosity make_shale_and_phi ('ovr_') # Make correlated random fields real_par = {'name':'ovr_bk_', 'nr':1, 'seed':1} rfield.rfield (real_par,noise_grid_par,noise_par) # Add correlated noise to the porosity add_noise_overburden ('ovr_',noise_par['std_dev']) # Make density and sonic velocities make_rho_and_vel ('ovr_') # Apply top & bottom tapers to the property arrays apply_taper ('ovr_',memsize,noise_grid_par,taper_par)
def make_reservoir(memsize=100, private=None, grid_par=None, geo_par=None, sand_par=None, bk_noise_par=None, sd_noise_par=None, taper_par=None): # Get channel properties from the data server get_props(private) # Put the channel properties into layer arrays make_prop_arrays(memsize, grid_par) # Make channel profile surfaces make_surfaces(geo_par) # Erode the channel profile surfaces erode_surfaces(memsize) # Put channel properties into a regular grid make_prop_grids(memsize, grid_par) # Make indicators and masks make_masks(memsize, grid_par) # Make sand fraction grid make_sand(grid_par, geo_par, sand_par) # Add padding in the x and y direction and reset the origin add_xy_pad('res_', grid_par['xy_pad']) # Make shale and porosity make_shale_and_phi('res_') # Make correlated random fields noise_grid_par = grid_par.copy() noise_grid_par['nx'] = grid_par['nx'] + 2 * grid_par['xy_pad'] noise_grid_par['ny'] = grid_par['ny'] + 2 * grid_par['xy_pad'] real_par_bk = {'name': 'res_bk_', 'nr': 1, 'seed': 1} real_par_sd = {'name': 'sd_', 'nr': 15, 'seed': 2} rfield.rfield(real_par_bk, noise_grid_par, bk_noise_par) rfield.rfield(real_par_sd, noise_grid_par, sd_noise_par) # Add correlated noise to the porosity add_noise_reservoir('res_', bk_noise_par['std_dev'], sd_noise_par['std_dev']) # Make density and sonic velocities make_rho_and_vel('res_') # Apply top & bottom tapers to the property arrays apply_taper('res_', memsize, grid_par, taper_par)
def make_reservoir ( memsize=100, private=None, grid_par=None, geo_par=None, sand_par=None, bk_noise_par=None, sd_noise_par=None, taper_par=None): # Get channel properties from the data server get_props (private) # Put the channel properties into layer arrays make_prop_arrays (memsize,grid_par) # Make channel profile surfaces make_surfaces (geo_par) # Erode the channel profile surfaces erode_surfaces (memsize) # Put channel properties into a regular grid make_prop_grids (memsize,grid_par) # Make indicators and masks make_masks (memsize,grid_par) # Make sand fraction grid make_sand (grid_par,geo_par,sand_par) # Add padding in the x and y direction and reset the origin add_xy_pad ('res_',grid_par['xy_pad']) # Make shale and porosity make_shale_and_phi ('res_') # Make correlated random fields noise_grid_par = grid_par.copy() noise_grid_par['nx'] = grid_par['nx']+2*grid_par['xy_pad'] noise_grid_par['ny'] = grid_par['ny']+2*grid_par['xy_pad'] real_par_bk = {'name':'res_bk_', 'nr':1, 'seed':1} real_par_sd = {'name':'sd_', 'nr':15, 'seed':2} rfield.rfield (real_par_bk,noise_grid_par,bk_noise_par) rfield.rfield (real_par_sd,noise_grid_par,sd_noise_par) # Add correlated noise to the porosity add_noise_reservoir ('res_',bk_noise_par['std_dev'],sd_noise_par['std_dev']) # Make density and sonic velocities make_rho_and_vel ('res_') # Apply top & bottom tapers to the property arrays apply_taper ('res_',memsize,grid_par,taper_par)