Sim4Life

586 Topics 1.8k Posts

Subcategories


  • Installing Sim4Life and configuring licenses

    29 Topics
    104 Posts

    These error messages can be safely ignored, but I will pass them along to see if such overzealous and misleading error messages can be suppressed in the future.

  • Working with CAD models

    55 Topics
    184 Posts

    Hi,

    It seems that the recommended method to create 3D models from a 2D cross-section is to extrude the surface mesh into a 3D triangle mesh. I wonder what pros and cons this approach has, compared to just coverwire the outline of the 2D geometry, and extruding that as a solid body?

  • Working with models from the Virtual Population

    46 Topics
    209 Posts

    Thank you for the detailed answer!

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

    219 Topics
    650 Posts

    Hi

    I've moved to a new computer with a new install of Sim4Life. On prior models this was not an issue, but I now seem unable to drag and drop (Or find an alternative method) for placing a modelled line as a voltage sensor within the model.
    No error shows up, just nothing happens.

    Cheers,
    Byron

  • Postprocessing results

    94 Topics
    261 Posts

    Hello all,
    I am working on temporal interference on a anatomical model of a human head, with two pairs of electrodes.

    I would like to run an optimization in order to optimize the placement, on the scalp of the participant, of two pairs of electrodes, in order to maximize the stimulation induced on a specific area of the brain. However, I cannot find a way to have parameters that satisfy my needs, especially the two following:

    the electrodes should move only at the surface of the scalp and not elsewhere both pair of electrodes should be considered to optimize stimulation TI MAM(x,y,z) should be maximized in a predifined entity

    I would be grateful to anyone with ideas on how to tackle that issue.
    Thanks in advance!
    Best

  • Scripting interface for Sim4Life

    114 Topics
    316 Posts

    Hello,

    Is there a way to clear or reset the geometry in a Python script? ie. delete all objects & start over?

    If you run the same script multiple times (ie. while developing/debugging) you wind up with multiple geometry objects.

    Currently I'm deleting them by hand to start over.

    What's the recommended workflow for this?

    Thank you!

  • Running Sim4Life over a network

    3 Topics
    5 Posts

    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?
  • Cannot open .smash project file

    3
    0 Votes
    3 Posts
    72 Views

    Thank you so much you are a godsend 🙏 You saved me a couple days worth of work!

  • 0 Votes
    4 Posts
    112 Views

    In terms of the material settings in the thermal simulation:
    The heat transfer rate defines whether heat removal by perfusion should be considered. In the absence of this term, heat is only removed by thermal conduction (diffusion) and boundary conditions. The options provided for heat transfer rate affect whether perfusion is constant or affected by local thermoregulation (temperature (T) dependent perfusion, e.g., to account for vasodilation). As for the heat transfer rate, the heat generation rate term can be constant or affected by local thermoregulation (T dependent, reflecting increased metabolic activity with increasing temperature). It is also possible to introduce time-dependent heat generation, e.g., to model a heating battery.
    Baseline perfusion values (incl. variability information) are available in the IT'IS database and can be automatically assigned from sim4life: (http://www.itis.ethz.ch/virtual-population/tissue-properties/database/database-summary/).
    If non-constant perfusion should be applied or not depends on the tissue and temperature increase magnitude (e.g., muscle above 39 starts to have a strong perfusion increase). The conservativeness of a perfusion model choice is application-dependent.

    To simulate the heating effect of tissues over time, blood perfusion and heat generation rate (metabolic heat generation) of the tissue would also need to be considered. The perfusion is covered in the option "Heat Transfer Rate". All options that you can enter here are related to heat-transfer based removal of energy from the system. Perfusion can be adjusted by changing the type of hear transfer (None, Constant, Linear (T), Piecewise Linear (T).

    The constant term assumes constant perfusion, independent of tissue temperature. It is the default assigned when using the IT'IS tissue database in Sim4Life. Linear (T) or Piecewise Linear (T) assume temperature dependent perfusion. You can add your your transition temperatures using the little "+" icon. Please note that the linear coefficients represent the slope of the linear perfusion. Each transition temperature indicates the change of the perfusion rate.
    For example, if you wish to enter constant perfusion up to 37 degrees, linear perfusion of 10 times the "standard" perfusion rate between 37 and 43 degrees, and constant perfusion above 43 degrees, then you would enter:
    transition temperatures: [37,44], linear coefficients: [10,0].

  • Grid Convergence

    Unsolved
    2
    0 Votes
    2 Posts
    137 Views

    To perform such a study, define your region or quantity of interest, then parametrize it. After a quantity has been parametrized, you can run multiple simulations using the built in Sweeper feature or using the Sim4Life Python API.

    There is an example in the Sim4Life manual titled 'Parametrized Patch Antenna' that shows how to use the Sweeper feature.

    If using the Python API, the easiest way would be to create a baseline simulation by hand, then right-click on the simulation name and select To Python. Then you would find the quantity of interest in the auto-generated script and assign it to a variable instead of the hardcoded value. Using a simple loop in Python, you can create multiple simulation that have identical setup except for parameters of interest.

    In your example, multiple simulations would be run with identical setup except for the grid resolution within a region of interest (e.g., a wire block surrounding a region of interest is placed in a manual grid settings folder, then Maximum Step is changed from 0.3 to 1.0 mm).

    Then in Analysis you extract a quantity of interest and compare how this value changes as a function of grid resolution.

    If the change in the value is small as you increase resolution, you can proceed in future simulations with a coarser resolution to save on run time. The exact convergence of the value needed depends on your application.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    2 Views
    No one has replied
  • My S4L file isn't opening after it crashed

    3
    0 Votes
    3 Posts
    198 Views

    @bryn Thank you Bryn.
    Managed to find a version that wasn't corrupted!
    Hope you have a nice day 🙂

  • 3D Surface model to Voxel and export

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

  • This topic is deleted!

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

    1
    0 Votes
    1 Posts
    10 Views
    No one has replied
  • 0 Votes
    4 Posts
    481 Views

    Assuming 'sim' is the acoustic simulation you're interested in and that 'elements' is a list of the elements (gotten from entities = model.AllEntities()) and that 'amp' and 'phase' are numpy arrays with the amplitude, phase values you're interested in assigning:

    # Print current simulation name print(sim.Name) # Remove all sources before adding them to_del = [] for s in sim.AllSettings: if isinstance(s,acoustic.SourceSettings): to_del.append(s) for d in to_del: sim.Remove(d) # Add sources with correct element and parameters for source_idx in np.arange(len(elements)): source_settings = acoustic.SourceSettings() source_settings.Amplitude = amp[source_idx] source_settings.Phase = phases[source_idx] sim.Add(source_settings, rings[source_idx]) print(rings[source_idx].Name, amp[source_idx], phases[source_idx])

    Sorry I'm not providing a full example. Easiest way to do that would be to manually create the whole simulation without the sources (just make all sources as materials), then right click on simulation and select 'To Python...' and then add the lines above to your code

    You could do something like this to get the elements as a list:

    src_ents = [] entities = model.AllEntities() for e in entities: if 'Element' in e.Name: src_ents.append(e)

    Careful, I have no idea how the elements will be sorted in that case but you could use a fixed size numerical suffix and then sort them.

  • File .Smash error

    2
    0 Votes
    2 Posts
    303 Views

    Hallo,
    There should be, in the same folder where the smash project is, a file named as the smash file, but starting with a ".", like ".Name_of_the_File.smash.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".
    Try to drag that file directly into Sim4Life and save it with a different name. From there you should be able to go on with the models/simulations/analysis settings already saved.

  • Cannot read document verion

    3
    0 Votes
    3 Posts
    300 Views

    I have two versions installed (6.2.2 and 7.00) and I tried opening the file with both. I have now deleted the smash file that wasn't working and started over, but if it happens again, I will try the import option- thanks!

  • Bone identification using RF signals

    1
    0 Votes
    1 Posts
    204 Views
    No one has replied
  • 0 Votes
    3 Posts
    405 Views

    If you don't have a full version, i think (untested) you can still recover the model by importing the smash file in the modeling tab.

  • 'Point Sensor Tool' is not available

    7
    0 Votes
    7 Posts
    541 Views

    Sorry, don't have S4L with neuron available at the moment, but I looked at the tutorial and it seems to have changed. When you create the sensor settings can you try to drag and drop the axon to the sensor setting and then chose the section name? (That was the old way of doing it)

    Still, you should be able to run the simulation without a point sensor.. Sorry can't help more

  • 0 Votes
    5 Posts
    425 Views

    I am using Sim4Life 6.2.1.4972.
    It happened once when I've had put a high "maximum number of samples" in the time domain (200 I think) with the acoustic head tutorial that I changed a bit, by putting 2 transducers instead of 1.
    Another time it was weird because it happened with a SEFT targeting a square of skin, which was rather simple but it did crash again. My simulation was probably wrong in a way, but it didn't throw and error and just stopped.

    But now that I am applying @gbgbha advices, it is fine 🙂 and thanks for the tip ! I'll try for the file that I lost

  • Why does TRP exceed input power(Antenna)?

    2
    0 Votes
    2 Posts
    353 Views

    The TRP is computed in a different way than the input power. Both ways are mathematically correct and would both be "exact" if there were no numerical errors. In any FDTD simulation, however, there are spatial (finite grid) or temporal (finite time step) discretization error.
    What you are seeing in this half-wave dipole example, is that those discretization errors are larger than the precision you would require to distinguish TRP from input power (because the radiation efficiency is very high in this case, there is almost no difference between TRP and input power).

    To solve this "problem", either you accept that the simulation results are accurate enough for your needs (the warning is a simple consistency check) or you increase the precision of the simulation. You can do so by increasing the grid resolution, the overall convergence level and the resolution of the far-field sensor. This will be computationally expensive, though.

    To help you understand, you could try to add some lossy media in your (coarse) simulation (e.g. place the dipole next to a phantom or any other dielectric). The simulation will not be more precise, but the numerical errors will be less "obvious" because they will be dwarfed by the losses occurring in the dielectric. The TRP will be lower than the input power and the warning will not be triggered.

    I hope this helps.

  • 0 Votes
    1 Posts
    218 Views
    No one has replied
  • S4L is unable to read and load my project

    18
    0 Votes
    18 Posts
    2k Views

    THank you very much for the hints.

  • 0 Votes
    5 Posts
    913 Views

    That works! If it's for a 2D plot, you can always right click and export the data to an excel or csv file and then work with that if you'd prefer

  • Optimal performance

    3
    0 Votes
    3 Posts
    403 Views

    The full version has the same performance as the Light version: it can just deal with bigger problems.
    Note that the low-frequency solvers are not GPU-accelerated, so if you are using that the GPU is anyway not used. If you are using the FDTD solver instead, it is accelerated by the GPU but its performance might be severely affected by the frequency of your simulation (the lower the frequency, the more iteration the FDTD method has to do in order to reach convergence). If you are in a regime where the quasi-static approximations hold, I would strongly advise you to use the LF solvers.