Simulations & Solvers

FDTD, Low-Frequency, Neuron, Mode-Matching, Flow, Acoustics, etc...

219 Topics 655 Posts

Subcategories


  • FDTD, Low-Frequency, Neuron, Mode-Matching, Flow, Acoustics, etc...

    11 Topics
    27 Posts

    Hi! Can someone help me understand if it makes sense to calculate SAR statistics in a low frequency electrical stimulation (30 Hz)? Thanks!!

  • 1 Votes
    2 Posts
    640 Views

    By default, Sim4Life tries to use all available resources to start as many simulations as you submit or have cores or GPUs available. The first simulation usually starts fine, and the rest fail due to insufficient licenses.

    You have the option to limit the number of simultaneous simulations in the ARES tool. Please change the Resource Management Option from Concurrent Jobs to One Job at a time as in the attached screenshot.

    Ares3.jpg

  • 0 Votes
    3 Posts
    680 Views

    Thank you for the great explanation.

  • Cannot place line as a voltage sensor

    4
    0 Votes
    4 Posts
    161 Views

    It looks like this is a bug. Until it is fixed, you can still add line sensors to LF simulations using the API.

    Here is a quick example that adds an entity named 'Lines 1' as a voltage sensor:

    # -*- coding: utf-8 -*- import numpy import s4l_v1.document as document import s4l_v1.materials.database as database import s4l_v1.model as model import s4l_v1.simulation.emlf as emlf 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.version8_0) # Creating the simulation simulation = emlf.ElectroQsOhmicSimulation() # Mapping the components and entities component__plane_x = simulation.AllComponents["Plane X+"] component__plane_x_1 = simulation.AllComponents["Plane X-"] component__background = simulation.AllComponents["Background"] component__plane_y = simulation.AllComponents["Plane Y+"] component__plane_y_1 = simulation.AllComponents["Plane Y-"] component__plane_z = simulation.AllComponents["Plane Z+"] component__plane_z_1 = simulation.AllComponents["Plane Z-"] component__overall_field = simulation.AllComponents["Overall Field"] entity__line = model.AllEntities()["Lines 1"] # Adding a new VoltageSensorSettings voltage_sensor_settings = emlf.VoltageSensorSettings() components = [entity__line] simulation.Add(voltage_sensor_settings, components) # Editing AutomaticGridSettings "Automatic automatic_grid_settings = [x for x in simulation.AllSettings if isinstance(x, emlf.AutomaticGridSettings) and x.Name == "Automatic"][0] components = [entity__line] simulation.Add(automatic_grid_settings, components) # Editing AutomaticVoxelerSettings "Automatic Voxeler Settings automatic_voxeler_settings = [x for x in simulation.AllSettings if isinstance(x, emlf.AutomaticVoxelerSettings) and x.Name == "Automatic Voxeler Settings"][0] components = [entity__line] simulation.Add(automatic_voxeler_settings, components) # Update the materials with the new frequency parameters simulation.UpdateAllMaterials() # Update the grid with the new parameters simulation.UpdateGrid() # Add the simulation to the UI document.AllSimulations.Add( simulation )
  • 0 Votes
    3 Posts
    377 Views

    To follow up on this problem just in case other people encounter similar issues, I found out that in my case this error was caused by cropping the region of interest out of the anatomical model.
    I cropped the Jeduk static surfaces with Planar cut as well as the nerve trajectories to preserve only the torso/chest region. As a result, from some nerve trajectories that extend beyond the region of interest and loop back into the region, multiple wires resulted from the cropping. The discontinuity in these splines caused issues in discretization which showed up in the console as a "Failed to interpolate extracellular fields onto neurons" error for me.
    This problem was solved by iterating through all the remaining nerve trajectories after cropping and checking using xcm.GetWires() how many wire bodies are contained in each trajectory. If there is more than one, the wire body with the max length is cloned and given the same name as the original trajectory and the problematic trajectory was deleted.

  • run two simulations on the same computer

    4
    0 Votes
    4 Posts
    443 Views

    Hey there!
    That's a pretty powerful setup with dual GPUs! To run two simulations at the same time, you can utilize parallel computing techniques to distribute the workload across both GPUs. Since you already know how to designate GPUs for each simulation, you might want to explore frameworks like CUDA or OpenMP, which are excellent for managing parallel tasks. Ensure that your simulation software is configured to support multi-GPU operations and check its documentation for any specific settings related to concurrent simulations. Sometimes, fine-tuning the job scheduling can also help in managing simultaneous tasks more effectively.
    On another note, if you're interested in staying ahead with technology, check out Quantum AI. They delve into the fascinating world of quantum computing, which has the potential to transform simulation and problem-solving in groundbreaking ways. Best of luck with your simulations!

  • Impedance of tissue

    Unsolved
    1
    0 Votes
    1 Posts
    127 Views
    No one has replied
  • 0 Votes
    5 Posts
    254 Views

    @brown
    Thank you, I will check these things. Additionally, there are some warning messages which may help:
    7427af6d-b388-4d9a-b629-2678e1872293-image.png
    Is the mesh division not precise enough?

  • Running iSolve on GPU

    4
    0 Votes
    4 Posts
    180 Views

    You definitely have enough memory here. It's likely that the solver could not use the device for some other reason. Can you try updating your graphics drivers?

  • Fields data extraction after MQS simulation

    3
    0 Votes
    3 Posts
    167 Views

    Thanks for your reply

  • Grid Setting

    3
    0 Votes
    3 Posts
    186 Views

    I think you can change how the steps change between gridlines with the grading option. If you have some entities that should not influence the grid set priority to zero (for those entities). Then choose the largest grid step you want for the global settings and and the smallest (0.5mm) for the arrays_grid. You should manage to control how the grid changes away from the arrays_grid.

  • 0 Votes
    2 Posts
    134 Views

    When using a long line as "normal" edge source, the discretization will result in one edge being the actual source and rest of the line being discretized as PEC filament. This can lead (depending on the excitation frequency, the length of the source line and the setup) to inaccuracies due to the additional capacitance introduced be the PEC filaments. An alternative that is, in most cases, a more accurate source representation is using the "Distribute Along Line" option, the source is equally distributed over all the discretized edges of a line element (see image, right). That prevents any PEC filaments and therefore makes the injection of the signal more realistic.

    Time delay = distance between the transmitter and receiver*sin(theta)/c where theta is the angle of antenna. I would suggest looking into antenna array literature for theoretical background on calculating this quantity.

  • 0 Votes
    3 Posts
    174 Views

    If you click on Network Analysis in your Analysis tree, what is your Reference Impedance?

    It is set to 50 ohms by default, but you have change it based on the Input Impedance for the coil before plotting the S11 curve.

    Plot the complex Input Impedance. At resonance, the imaginary part will be zero (the circuit is purely resistive). So at the desired resonant mode / frequency, you should find the corresponding real value, and set this value as the reference impedance to plot |S11|.
    image.png
    6f536c46-f9f2-4d5a-b787-cfdb97521404-image.png
    5730b440-37ea-4190-824e-1fac4e45155a-image.png

  • Cannot run tutorial

    Solved
    3
    0 Votes
    3 Posts
    139 Views

    Thank you very much. This fixed the issue. This was related to Ares also.

  • Convergence Level in S4L

    2
    0 Votes
    2 Posts
    154 Views

    A simulation can end in a couple different cases: If the specified level of convergence is reached, or if the specified number of periods are simulated. In the case of that tutorial, the simulation is set to run for 15 periods, and so it ended before a -50 dB convergence was reached. Convergence is a spectrum, and the level of convergence required for a given application is up to the user's discretion.

  • 0 Votes
    4 Posts
    197 Views

    Thanks Ofi. How can I fix this or is this something I need to account for?

  • tutorial not running

    1
    0 Votes
    1 Posts
    94 Views
    No one has replied
  • FDFD solver tutorials

    1
    0 Votes
    1 Posts
    84 Views
    No one has replied
  • Thermal external input file

    1
    0 Votes
    1 Posts
    101 Views
    No one has replied
  • Modeling Ferrite in an FDTD Simulation

    2
    0 Votes
    2 Posts
    136 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.
  • Python API for Debye dispersive model

    2
    0 Votes
    2 Posts
    196 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]