plot a specific parameter on a surface
-
Dear all,
for some projects, it is valuable to be able to plot a specific parameter on a surface. For instance, consider you want to plot energy density in spherical capacitor which is proportional to square of electric field. for this purpose, you can write python code like below:
import numpy import s4l_v1 as s4l import s4l_v1.analysis as analysis import s4l_v1.document as document import s4l_v1.model as model import s4l_v1.units as units from s4l_v1 import ReleaseVersion from s4l_v1 import Unit # Define the version to use for default values ReleaseVersion.set_active(ReleaseVersion.version5_2) # Creating the analysis pipeline # Adding a new SimulationExtractor simulation = document.AllSimulations["LF Unstructured"] simulation_extractor = simulation.Results() # Adding a new ModelToGridFilter inputs = [] model_to_grid_filter = analysis.core.ModelToGridFilter(inputs=inputs) model_to_grid_filter.Name = "desired surface" model_to_grid_filter.Entity = model.AllEntities()["desired surface"] model_to_grid_filter.MaximumEdgeLength = 0.1e-3, units.Meters model_to_grid_filter.UpdateAttributes() document.AllAlgorithms.Add(model_to_grid_filter) # Adding a new EmSensorExtractor em_sensor_extractor = simulation_extractor["Overall Field"] em_sensor_extractor.FrequencySettings.ExtractedFrequency = u"All" document.AllAlgorithms.Add(em_sensor_extractor) # Adding a new FieldInterpolationFilter inputs = [em_sensor_extractor.Outputs["EM E(x,y,z,f0)"], model_to_grid_filter.Outputs["Surface"]] field_interpolation_filter = analysis.core.FieldInterpolationFilter(inputs=inputs) field_interpolation_filter.UpdateAttributes() document.AllAlgorithms.Add(field_interpolation_filter) # field = field_interpolation_filter.Outputs[0] field.Update() #get data data = field.Data.Field(0) #compute desired value out=data**2 # target_grid=model_to_grid_filter.Outputs[0].Data # energy_density= s4l.analysis.core.ComplexFloatFieldData() energy_density.Allocate(1,target_grid.NumberOfPoints, 1) energy_density.Grid = target_grid energy_density.Quantity.Name = "out" energy_density.SnapshotQuantity = field.Data.SnapshotQuantity energy_density.Snapshots = field.Data.Snapshots energy_density.ValueLocation = field.Data.ValueLocation energy_density.SetField(0, out) energy_density.Check() source = s4l.analysis.core.TrivialProducer() source.SetDataObject(energy_density) inputs = [source.Outputs["out"]] surface_viewer = analysis.viewers.SurfaceViewer(inputs=inputs) surface_viewer.Data.Mode = surface_viewer.Data.Mode.enum.QuantityRealPart surface_viewer.UpdateAttributes() document.AllAlgorithms.Add(surface_viewer) surface_viewer.Update()
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login