• 0 Votes
    2 Posts
    109 Views

    Hi @arc Please check "Console" window (open it via menu VIEW | Console if it is not open) to see what kind of error you are getting. The reason for failed simulation might be related to something else. You can easily test with an existing tutorial example. For example,

    open Dipole Antenna Tutorial, model a rectangular brick next to the dipole, clone one of the existing simulation settings and drag&drop this new brick into the simulation set its material such that rel/ Permeability o 1e4 generate grid, voxel and run to see if it also fails
    I hope it helps.
  • 0 Votes
    2 Posts
    170 Views

    Yes,

    You need to import XMaterials and specify the material model to be linear dispersive, as in the following example (which should be easy to extend), where parameters for one Debye pole are assigned.

    import XMaterials as xm # Adding a new MaterialSettings material_settings = emfdtd.MaterialSettings() material_settings.ElectricProps.MaterialModel = material_settings.ElectricProps.MaterialModel.enum.LinearDispersive # Specify settings for dispersive poles material_settings.raw.ElectricDispersiveSettings.StartFrequency = 10.e6 material_settings.raw.ElectricDispersiveSettings.EndFrequency = 100000.e6 material_settings.raw.ElectricDispersiveSettings.Conductivity = 0. material_settings.raw.ElectricDispersiveSettings.Permittivity = 11.098 debye_pole_01 = xm.LinearDispersionPole() debye_pole_01.Active = True debye_pole_01.Type = xm.LinearDispersionPole.ePoleType.kDebye debye_pole_01[xm.LinearDispersionPole.ePoleProperty.kDebyeAmplitude] = 1.0 debye_pole_01[xm.LinearDispersionPole.ePoleProperty.kDebyeStaticPermittivity] = 22.67 debye_pole_01[xm.LinearDispersionPole.ePoleProperty.kDebyeInfinityPermittivity] = 11.098 debye_pole_01[xm.LinearDispersionPole.ePoleProperty.kDebyeDamping] = 3.234e-11 # Add dispersive poles to the Linear Electric Dispersion Viewer material_settings.raw.ElectricDispersiveSettings.Poles = [debye_pole_01]
  • Line fed slot antenna

    CAD Modeling
    4
    0 Votes
    4 Posts
    168 Views

    Then you can keep the substrate as it is and translate the edge source (polyline) along the microstrip line until it also touches the ground plane (keeping it always axis-aligned).

  • 1 Votes
    2 Posts
    163 Views

    I suspect that this is because the grid from your LF simulation does not match the grid that you use in your isotropic and anisotropic simulations.

    The isotropic simulation runs fine because it does not use your cache file.

    The anisotropic simulation has stored those conductivity values expecting a specific grid.

    Try right clicking on the grid settings folder in the simulation from which you are creating your anisotropy tensor, select "Copy Grid Configuration", then "Paste Grid Configuration" on the anisotropic simulation.

    If you want to include features in your anisotropic simulation that you don't don't want to have simulated in your initial LF simulation, you can still include include objects in your initial simulation so that they are considered for the gridding without assigning them material properties, using them as a boundary condition or voxeling them. Just drag the object directly into the grid settings folder. That way your grid can always match.

  • 0 Votes
    2 Posts
    166 Views

    The following example for a 2-port simulation combiner should help.

    i = 0 for channel in em_multi_port_simulation_combiner.GetChannelWeights(): power = [1.0, 2.0] phase = [45, 90] em_multi_port_simulation_combiner.SetChannelWeight(channel, power[i], phase[i]) i += 1 em_multi_port_simulation_combiner.UpdateAttributes() em_multi_port_simulation_combiner.Update() document.AllAlgorithms.Add(em_multi_port_simulation_combiner)
  • 0 Votes
    2 Posts
    145 Views

    Hi @yiyang did it happen with one particular simulation project or does it always happen? Please (if you can) share the project with Sim4Life Application team via sending an email to s4-support@zmt.swiss to check. Thanks

  • 0 Votes
    1 Posts
    118 Views
    No one has replied
  • 1 Votes
    7 Posts
    431 Views

    Thank You, It really works.

  • 0 Votes
    1 Posts
    94 Views
    No one has replied
  • 0 Votes
    5 Posts
    240 Views

    @MSJ the modify button is probably hidden on the top right, if you click the triangle where you see the three dots (...).

  • 0 Votes
    2 Posts
    196 Views

    Are you using Sim4Life lite (web version)? I recorded my screen while I voxeled Duke V2.0 and exported the voxels.
    There seems to be a glitch in the Reload button when I try to see the data that was saved in the Study: as a workaround the Reload button in the DATA tab works. I voxeled at 15mm, so the skin is not completely closed, but if you choose something like 5-10mm it should be enough to resolve thin layers (like the skin):

    BTW. if you are using a desktop version of Sim4Life, the workflow is similar, except that the software uses native Windows file dialogs to save/load files.

    Youtube Video

  • 0 Votes
    1 Posts
    113 Views
    No one has replied
  • 0 Votes
    1 Posts
    95 Views
    No one has replied
  • 0 Votes
    3 Posts
    201 Views

    Hi @dbsim4
    I think it would help a lot if you could post an image depicting what you are trying to achieve.

    Answering the question from the subject line: No, there is no snapping in Python (not sure how that API could look like), but there are functions to get the distance between entities (and corresponding closest points), which may help.

    brick1 = XCoreModeling.CreateSolidBlock(Vec3(0), Vec3(1)) brick2 = XCoreModeling.CreateSolidBlock(Vec3(2), Vec3(3)) res = XCoreModeling.GetEntityEntityDistance(brick1, brick2) print(f"Distance brick1-brick2: {res[0].Distance}") print(f"Closest point on brick1: {res[0].ClosestPosition}") print(f"Closest point on brick2: {res[1].ClosestPosition}")

    or distance to a point:

    brick = XCoreModeling.CreateSolidBlock(Vec3(0), Vec3(1)) res = XCoreModeling.GetEntityEntityDistance(brick, Vec3(3)) print(f"Distance brick-point: {res.Distance}") print(f"Closest point on brick: {res.ClosestPosition}")

    For geometry that has end-points or corners, you could extract the vertices and again use distance wrt some other point as a way to write a script.

    edge = XCoreModeling.CreateEdge(Vec3(0), Vec3(1)) vertices = XCoreModeling.GetVertices(edge) assert len(vertices) == 2 for v in vertices: print(v.Position) brick = XCoreModeling.CreateSolidBlock(Vec3(0), Vec3(1)) vertices = XCoreModeling.GetVertices(edge) assert len(vertices) == 8
  • How to create solid circle ie. with surface ?

    Unsolved Python API
    4
    0 Votes
    4 Posts
    204 Views

    @dbsim4 regarding your "Update", I am not sure I understand the context. Are you trying to assign the circle loop as an edge source?

  • 0 Votes
    2 Posts
    187 Views

    I eventually configured Sim4Life on a Cloup GPU workstation (paperspace.com). The workstation has an Intel Xeon E5-2630 v3 processor, 16 virtual cores, 90 GB of RAM, and two NVIDIA Ampere A6000 GPUs, each with 48 GB of GPU memory. For Exablate Neuro transducers (220 and 670 kHz) simulations, the workstation improved simulation speed from about 200 Mcell/s with an 8-core OpenMP configuration, to about 12000 Mcells/s with two GPUs.

    The workstation allows simulations (1449x1149x816 grid, 200 periods, 670 kHz, 0.22 mm max step for 10 points per wavelength) in about 40 minutes with Fourier-domain sensor recordings and about 4 hours with Time-domain sensor recordings. Time-domain simulations seem only compatible with a single GPU, while Fourier-domain sensor simulations can use both GPUs. Also, the Fourier domain field sensor recordings create simulations that look unstable (or less accurate) compared to the time-domain field sensor recordings, with all other factors equal. Only the time-domain simulations have readily matched previous studies, but the simulation time is still too long.

    Can the time-domain sensor acoustic simulation be run on multiple GPUs? Also, most of the time for Fourier-domain simulations is spent "allocating memory for the voxel array." Is there a way to configure the GPU to preallocate memory or another way to reduce the amount of time to distribute the array memory?
  • Acoustic simulation

    Simulations & Solvers
    2
    0 Votes
    2 Posts
    149 Views

    We use standard units in the acoustic solver, which means we're solving the wave equation in pressure which has units of Pa.

    Note though that the acoustic equation is Linear (careful, this doesn't apply to the nonlinear solver), which means that you can arbitrarily scale the input signal by a scalar and the output (in pressure) will be exactly the same and scaled by that same constant. (You need to be careful when you consider energy related quantitites which are something something pressure squared)

    Essentially, find the scaling factor between pressure and voltage (assuming linearity), then run your simulation with an arbitritrary amplitude and then scale the pressure output.

  • 0 Votes
    10 Posts
    422 Views

    Really sorry, I honestly don't understand - I don't know what you mean with modulation and I'm not sure what you mean with using matlab and what input file you are exactly referring to. Maybe some screenshots will help, otherwise maybe contact support

  • 0 Votes
    3 Posts
    229 Views

    Thank you! That helps a lot.

  • 0 Votes
    7 Posts
    644 Views

    The problem has been resolved, thank you.