points[:,outside], evalOptions) - dlPotExt.evaluateAtPoints(scattDirichletTrace, points[:,outside], evalOptions) + evalIncField(points[:,outside])) # Evaluate field (all three components) at interior points valsInt = ( slPotInt.evaluateAtPoints(intNeumannTrace, points[:,inside], evalOptions) + dlPotInt.evaluateAtPoints(intDirichletTrace, points[:,inside], evalOptions)) # Combine the results obtained for points inside and outside the scatterer # in a single array vals = np.empty((3, nPointsX * nPointsY), dtype=complex) for dim in range(3): # iterate over coordinates np.place(vals[dim], outside, valsExt[dim].ravel()) np.place(vals[dim], inside, valsInt[dim].ravel()) # Display the field plot from bempp import visualization2 as vis tvtkVals = vis.tvtkStructuredGridData(points, vals, (nPointsX, nPointsY)) tvtkGrid = vis.tvtkGrid(grid) vis.plotVectorData(tvtkGrids=tvtkGrid, tvtkStructuredGridData=tvtkVals) # Export the results into a VTK file from tvtk.api import write_data write_data(tvtkVals, "u.vts")
x, y, z = np.mgrid[-5:5:nPointsX*1j, 0:0:1j, -5:5:nPointsZ*1j] points = np.vstack((x.ravel(), y.ravel(), z.ravel())) # Use Green's representation formula to evaluate the total field evaluationOptions = createEvaluationOptions() scatteredField = -(slPotOp.evaluateAtPoints(neumannData, points, evaluationOptions)) incidentField = evalIncField(points) field = scatteredField + incidentField # Display the field plot from bempp import visualization2 as vis tvtkField = vis.tvtkStructuredGridData(points, field, (nPointsX, nPointsZ)) tvtkGrid = vis.tvtkGrid(grid) vis.plotVectorData(tvtkGrids=tvtkGrid, tvtkStructuredGridData=tvtkField) # from bempp import visualization as vis # uActor = vis.scalarDataOnRegularGridActor( # points, fieldMagnitude, (nPointsX, nPointsZ), # colorRange=(0, 2)) # legendActor = vis.legendActor(uActor) # gridActor = vis.gridActor(grid) # vis.plotTvtkActors([uActor, gridActor, legendActor]) # Export the results into a VTK file from tvtk.api import write_data write_data(tvtkField, "u.vts")