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) mpl.m2km()
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 # and plot it
""" 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')
GravMag: Forward gravity modeling using a stack of 3D polygonal prisms """ from fatiando import mesher, gridder, gravmag from fatiando.vis import mpl, myv bounds = [-10000, 10000, -10000, 10000, 0, 5000] area = bounds[:4] depths = [0, 1000, 2000, 3000, 4000] prisms = [] for i in range(1, len(depths)): axes = mpl.figure().gca() mpl.axis('scaled') for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) prisms.append( mesher.PolygonalPrism(mpl.draw_polygon(area, axes, xy2ne=True), depths[i - 1], depths[i], {'density': 500})) # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-1) gz = gravmag.polyprism.gz(xp, yp, zp, prisms) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("gz produced by prism model (mGal)") mpl.contourf(yp, xp, gz, shape, 20) mpl.colorbar() for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.show() # Show the prisms