prisms """ from fatiando import mesher, gridder, utils from fatiando.vis import mpl, myv from fatiando.gravmag import polyprism # The regional field inc, dec = 30, -15 # Draw each polygonal prism (viewed from above) bounds = [-5000, 5000, -5000, 5000, 0, 5000] area = bounds[:4] axis = mpl.figure().gca() mpl.axis('scaled') model = [ mesher.PolygonalPrism( mpl.draw_polygon(area, axis, xy2ne=True), # Use only induced magnetization 0, 2000, {'magnetization': 2})] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) tf = polyprism.tf(xp, yp, zp, model, inc, dec) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("Total field anomalyproduced by prism model (nT)") mpl.contourf(yp, xp, tf, shape, 20) mpl.colorbar() for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area)
prisms """ from fatiando import mesher, gridder, utils from fatiando.vis import mpl, myv from fatiando.gravmag import polyprism # The regional field inc, dec = 30, -15 # Draw each polygonal prism (viewed from above) bounds = [-5000, 5000, -5000, 5000, 0, 5000] area = bounds[:4] axis = mpl.figure().gca() mpl.axis('scaled') model = [ mesher.PolygonalPrism( mpl.draw_polygon(area, axis, xy2ne=True), # Use only induced magnetization 0, 2000, {'magnetization':2})] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) tf = polyprism.tf(xp, yp, zp, model, inc, dec) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("Total field anomalyproduced by prism model (nT)") mpl.contourf(yp, xp, tf, shape, 20) mpl.colorbar() for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area)
""" GravMag: 2D forward modeling with polygons """ import numpy from fatiando import utils, mesher from fatiando.gravmag import talwani from fatiando.vis import mpl # Notice that the last two number are switched. # This way, the z axis in the plots points down. area = (-5000, 5000, 5000, 0) axes = mpl.figure().gca() mpl.xlabel("X") mpl.ylabel("Z") mpl.axis('scaled') polygons = [mesher.Polygon(mpl.draw_polygon(area, axes), {'density': 500})] xp = numpy.arange(-4500, 4500, 100) zp = numpy.zeros_like(xp) gz = talwani.gz(xp, zp, polygons) mpl.figure() mpl.axis('scaled') mpl.subplot(2, 1, 1) mpl.title(r"Gravity anomaly produced by the model") mpl.plot(xp, gz, '-k', linewidth=2) mpl.ylabel("mGal") mpl.xlim(-5000, 5000) mpl.subplot(2, 1, 2) mpl.polygon(polygons[0], 'o-k', linewidth=2, fill='k', alpha=0.5) mpl.xlabel("X") mpl.ylabel("Z")
""" GravMag: 2D forward modeling with polygons """ import numpy from fatiando import utils, mesher from fatiando.gravmag import talwani from fatiando.vis import mpl # Notice that the last two number are switched. # This way, the z axis in the plots points down. area = (-5000, 5000, 5000, 0) axes = mpl.figure().gca() mpl.xlabel("X") mpl.ylabel("Z") mpl.axis('scaled') polygons = [mesher.Polygon(mpl.draw_polygon(area, axes), {'density': 500})] xp = numpy.arange(-4500, 4500, 100) zp = numpy.zeros_like(xp) gz = talwani.gz(xp, zp, polygons) mpl.figure() mpl.axis('scaled') mpl.subplot(2, 1, 1) mpl.title(r"Gravity anomaly produced by the model") mpl.plot(xp, gz, '-k', linewidth=2) mpl.ylabel("mGal") mpl.xlim(-5000, 5000) mpl.subplot(2, 1, 2) mpl.polygon(polygons[0], 'o-k', linewidth=2, fill='k', alpha=0.5) mpl.xlabel("X")
""" GravMag: 2D forward modeling with polygons """ import numpy from fatiando import utils, mesher from fatiando.gravmag import talwani from fatiando.vis import mpl # Notice that the last two number are switched. # This way, the z axis in the plots points down. area = (-5000, 5000, 5000, 0) axes = mpl.figure().gca() mpl.xlabel("X") mpl.ylabel("Z") mpl.axis('scaled') polygons = [mesher.Polygon(mpl.draw_polygon(area, axes), {'density':500})] xp = numpy.arange(-4500, 4500, 100) zp = numpy.zeros_like(xp) gz = talwani.gz(xp, zp, polygons) mpl.figure() mpl.axis('scaled') mpl.subplot(2,1,1) mpl.title(r"Gravity anomaly produced by the model") mpl.plot(xp, gz, '-k', linewidth=2) mpl.ylabel("mGal") mpl.xlim(-5000, 5000) mpl.subplot(2,1,2) mpl.polygon(polygons[0], 'o-k', linewidth=2, fill='k', alpha=0.5) mpl.xlabel("X")
""" GravMag: Generate synthetic gradient tensor data from polygonal prisms """ from fatiando import mesher, gridder from fatiando.gravmag import polyprism from fatiando.vis import mpl, myv print "Draw the polygons one by one" bounds = [-10000, 10000, -10000, 10000, 0, 5000] area = bounds[:4] axis = mpl.figure().gca() mpl.axis('scaled') model = [ mesher.PolygonalPrism(mpl.draw_polygon(area, axis, xy2ne=True), 0, 1000, {'density': 500}) ] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) data = [ polyprism.gxx(xp, yp, zp, model), polyprism.gxy(xp, yp, zp, model), polyprism.gxz(xp, yp, zp, model), polyprism.gyy(xp, yp, zp, model), polyprism.gyz(xp, yp, zp, model), polyprism.gzz(xp, yp, zp, model) ] # and plot it titles = ['gxx', 'gxy', 'gxz', 'gyy', 'gyz', 'gzz'] mpl.figure() mpl.axis('scaled')
from fatiando.vis import mpl print "Draw the polygons one by one" area = [-10000, 10000, -10000, 10000] dataarea = [-5000, 5000, -5000, 5000] model = [] for depth in [5000, 5000]: fig = mpl.figure() mpl.axis('scaled') mpl.square(dataarea) for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) model.append( mesher.PolygonalPrism( mpl.draw_polygon(area, fig.gca(), xy2ne=True), 0, depth, {'density':500})) # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(dataarea, shape, z=-500) data = [ polyprism.gxx(xp, yp, zp, model), polyprism.gxy(xp, yp, zp, model), polyprism.gxz(xp, yp, zp, model), polyprism.gyy(xp, yp, zp, model), polyprism.gyz(xp, yp, zp, model), polyprism.gzz(xp, yp, zp, model)] # Calculate the 3 invariants invariants = tensor.invariants(data) data = data + invariants # and plot it
log.info(logger.header()) log.info(__doc__) log.info("Draw the polygons one by one") area = [-10000, 10000, -10000, 10000] dataarea = [-5000, 5000, -5000, 5000] prisms = [] for depth in [5000, 5000]: fig = mpl.figure() mpl.axis('scaled') mpl.square(dataarea) for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) prisms.append( mesher.PolygonalPrism(mpl.draw_polygon(area, fig.gca(), xy2ne=True), 0, depth, {'density': 500})) # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(dataarea, shape, z=-500) tensor = [ gravmag.polyprism.gxx(xp, yp, zp, prisms), gravmag.polyprism.gxy(xp, yp, zp, prisms), gravmag.polyprism.gxz(xp, yp, zp, prisms), gravmag.polyprism.gyy(xp, yp, zp, prisms), gravmag.polyprism.gyz(xp, yp, zp, prisms), gravmag.polyprism.gzz(xp, yp, zp, prisms) ] # Calculate the 3 invariants invariants = gravmag.tensor.invariants(tensor) data = tensor + invariants
log.info(__doc__) # Make some synthetic gravity data from a polygonal prism model log.info("Draw the polygons one by one") bounds = [-10000, 10000, -10000, 10000, 0, 10000] area = bounds[:4] depths = [0, 1000, 3000, 7000] prisms = [] for i in range(1, len(depths)): # Plot previous prisms axes = mpl.figure().gca() mpl.axis('scaled') for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) # Draw a new polygon polygon = mpl.draw_polygon(area, axes, xy2ne=True) # append the newly drawn one prisms.append( mesher.PolygonalPrism(polygon, depths[i - 1], depths[i], {'density':500})) meshshape = (30, 30, 30) xp, yp, zp = gridder.regular(area, meshshape[1:], z=-10) gz = gravmag.polyprism.gz(xp, yp, zp, prisms) # Plot the data mpl.figure() mpl.axis('scaled') mpl.contourf(yp, xp, gz, meshshape[1:], 30) mpl.colorbar() mpl.xlabel('East (km)') mpl.ylabel('North (km)')