Skip to content
  • Search
Skins
  • Light
  • Brite
  • 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 638 Views 1 Watching
  • 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

    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
    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