Skip to content
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

ZMT zurich med tech

  1. Home
  2. Sim4Life
  3. Python API
  4. plot a specific parameter on a surface

plot a specific parameter on a surface

Scheduled Pinned Locked Moved Python API
1 Posts 1 Posters 214 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    Fariba_karimi
    wrote on last edited by Sylvain
    #1

    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()
    1 Reply Last reply
    1
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Search