Skip to content

Simulations & Solvers

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

244 Topics 734 Posts

Subcategories


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

    11 28
    11 Topics
    28 Posts
    AntoninoMCA
    @KK The titration procedure provides a scaling factor that must be applied to the stimulation source (incident E-field, input current, or voltage applied at electrode pairs) in order to initiate an action potential in a fiber or neuron. Here are some examples depending on the stimulation source: Source: Incident E-field (e.g., induced by TMS) Assume the incident electric field is 1 V/m, and the titration procedure yields a titration factor, tf. The threshold E-field is therefore tf [V/m]. If this 1 V/m field results from a coil current rate of change dI/dt = A [A/s], then the threshold dI/dt required is A × tf [A/s]. Source: Applied voltage Let the applied voltage across an electrode pair be V = V₀. This value is also used as the Dirichlet boundary condition in low-frequency (LF) simulations. If the titration factor is tf, the threshold voltage becomes V₀ × tf [V]. Source: Applied current Let the applied current to an electrode pair be I = I₀, typically derived from LF simulations via a current flux integrator. With a titration factor tf, the threshold current is I₀ × tf [A]. The titration factor tf is a dimensionless number that gains physical meaning when applied to the relevant stimulation quantity (electric field, voltage, or current). @LJ was suggesting the correct course of action. I hope this clarification is helpful!
  • 'conductivity is not vanishing (conductivity cannot be considered)'

    2
    0 Votes
    2 Posts
    346 Views
    SylvainS
    Hi, There is most likely an error due to a sanity check, since you appear to have lossy tissues in your simulation and the Magneto Static Vector Potential solver does not account for those losses. Having a ferrous core, however, you do need to use that solver. The trick is to chain 2 simulations: one that solves the magnetic vector potential (A), and one that uses this A as a source term to determine the induced electric field (this time accounting for losses). The key is to remove the lossy tissues from the first simulation (only metallic or ferrous materials play a role anyhow). I would recommend you have a look at the LF tutorial called "Wireless Power Transfer: Exposure Assessment", since it uses the same technique. In addition, it seems that "The solver may have run out of RAM"... I would therefore check the RAM usage to make sure it's not going beyond your resources. Note that using the technique above allows you to have two different resolutions: one optimized to properly resolve the coil, the other to resolve the tissues (as long as the domain sizes of the first simulation is large enough to include that of the second). This usually leads to smaller grid sizes, thereby reducing the RAM usage...
  • Errors QS MPI

    2
    0 Votes
    2 Posts
    339 Views
    M
    Hi Andrei, I replied on the other thread: https://forum.zmt.swiss/post/1941
  • Errors QS MPI

    2
    0 Votes
    2 Posts
    364 Views
    M
    Hi Andrei, this error shows when there are not enough MPI-QS tokens on your license to use all cores on your computer. If parallelization is set to automatic, Sim4Life iSolve will try to use all available cores, and one MPI-QS token per core is needed. You can change the number of processes (=cores) to be used by setting parallelization to Manual and entering the number of MPI-QS tokens + 1 (solver license).
  • 1 Votes
    1 Posts
    227 Views
    No one has replied
  • Modeling branching axons but not DRG

    1
    0 Votes
    1 Posts
    172 Views
    No one has replied
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    25 Views
    No one has replied
  • Adding the function to pause and resume simulations

    2
    0 Votes
    2 Posts
    339 Views
    brynB
    Dear @NaraSakamoto Thanks for your feature suggestion.
  • 0 Votes
    3 Posts
    617 Views
    ofliO
    Dear Ali, It looks like the path to iSolve is not set correctly. Please follow the steps below: Open Ares on the machine where Sim4Life is installed Click on the blue cross at the end of the line labeled "Paths to the iSolve solver executables." This will open a pop-up window. (see the image below) If the list of solvers is empty or the one you intend to use is not listed, simply add the path to the relevant solver. Restart Sim4Life. [image: 1724225171829-aresisolve-resized.png]
  • Cannot place line as a voltage sensor

    4
    0 Votes
    4 Posts
    865 Views
    B
    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 )
  • FAILED TO INTERPOLATE EXTRACELLULAR FIELDS ONTO NEURONS

    3
    0 Votes
    3 Posts
    885 Views
    N
    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
    1k Views
    M
    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
    369 Views
    No one has replied
  • How to set up the source when using a coaxial feed for a microstrip form antenna?

    Unsolved
    5
    1 Votes
    5 Posts
    951 Views
    H
    @brown Thank you, I will check these things. Additionally, there are some warning messages which may help: [image: 1714906840653-7427af6d-b388-4d9a-b629-2678e1872293-image-resized.png] Is the mesh division not precise enough?
  • Running iSolve on GPU

    4
    0 Votes
    4 Posts
    775 Views
    B
    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
    601 Views
    L
    Thanks for your reply
  • Grid Setting

    3
    0 Votes
    3 Posts
    633 Views
    brynB
    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.
  • "Distribute along line option". Difference in results?

    2
    0 Votes
    2 Posts
    441 Views
    H
    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
    625 Views
    B
    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: 1714032407782-a7146e86-302b-43e7-9dd1-9aac7dc76ccb-image.png] [image: 1714032424033-6f536c46-f9f2-4d5a-b787-cfdb97521404-image.png] [image: 1714032432837-5730b440-37ea-4190-824e-1fac4e45155a-image.png]
  • Cannot run tutorial

    Solved simulation
    3
    0 Votes
    3 Posts
    641 Views
    J
    Thank you very much. This fixed the issue. This was related to Ares also.
  • Convergence Level in S4L

    2
    0 Votes
    2 Posts
    502 Views
    B
    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.