This file is a documentation of all notable changes to PreonLab.
[6.1.3] - 2024-04-10
Fixed
- Fixed a crash in the CSV export of the “Wetting Sensor” if
track wetting time
is not enabled.
- Fixed an issue that dynamically generated solid particles were not
rendered correctly in all cases when using the
show particles
option.
- Introduced a statistic that displays the number of solid particles
per GPU for the scene.
- Addressed a particle deletion issue occurring for very high time
step ratios in VSM co-simulations by extrapolating intermediate vehicle
states.
- Fixed an MPI VSM co-simulation issue that occurred when reusing a
scene.
Optimized
- Reduced the file size of the CUDA plugin.
- In case of a fatal error, the error message is now additionally
printed to the terminal. Previously, it had only been printed to the log
file.
[6.1.2] - 2024-03-08
Added
- Added support for node-locked GPU licenses.
Fixed
- Fixed an issue that CPS coarsening could fail on the GPU in some
cases.
- Fixed an issue where the
FFmpeg file path
in the User
Preferences could not be restored on PreonLab startup.
- Fixed an issue in the “Force Sensor” where
use surface normals
was not considered on generating the
data to be exported to CSV files or buffers.
[6.1.1] - 2024-02-14
Fixed
- Fixed an issue that in rare cases, NaN (not-a-number) values were
produced by the PreonSolver on GPU, leading to massive particle
deletion.
- Fixed an issue that could lead to a very small timestep for thermal
simulations including heat flux boundary conditions.
- Prevented a warning about an invalid
nullptr
parameter
when entering the Scale
transform mode with no object
selected.
- Fixed a crash in the Connection Editor which occurred when clicking
control elements while drawing a new connection.
[6.1.0] - 2024-01-30
Added
Physics:
- Added
convective boundary condition
for solid
objects that interact with thermal solvers.
- Thermal solver: Added the option to choose the
implicit solver type
. Options are BiCGStab
(new default) and CG
.
GUI:
- Volume sources: Added the possibility to mesh and export a bad path,
if it exists, through a right-click action.
- Added the possibility to export multiple videos at once in the
“Video Export” dialog.
- The column separator in CSV exports can now be specified in the user
preferences.
Miscellaneous:
- Preon Mesher: Added the ability to set an
individual frame rate
that also allows for matching the
individual frame rate of the connected solver.
- Added Wayland support on Linux.
- Added
--gpuSelection
parameter to select which GPUs
should be used for the calculations.
- Added support for a new
GPU Single Node Unlimited
license type in the respective
CLI, PreonPy APIs, and PreonLab UIs.
- Added a file to the scene folder containing the version of
PreonLab it has been saved, simulated, or post-processed
with.
- Added a storage category for log files.
- Added a unit option for mesh export of pathlines.
PreonPy:
- Added a
get_image
method to objects of type
FloatFieldObject
that allows to get the texture data.
- Added a
get_texture3d
method to rigids that allows to
get the coloring texture data, e.g., when a force sensor is
connected.
- Added the
do_not_load_resources
parameter when opening
a scene. This allows opening a scene without resources that might take a
long time to load, e.g., geometries, pathlines, or air flow data. To be
able to load this data later, a load_initial_resources
method was added to the scene.
- Added
preonpy.plugin_args(…)
interface as a way to pass
configuration to plugins. This can be used to select which GPUs should
be used for the calculations.
- Added support for Python 3.12.
GPU:
- Added support to combine multiple GPUs within one node to
perform a simulation run. All GPUs within a node are employed
by default, provided it is covered by a respective license.
- “Air Flow” objects are now supported. For CSV data,
the
Gridless
storage option must be used. For volumetric
Ensight data, the VolumeData_Resampled
storage option must
be used.
- “Car Suspension Model” objects are supported.
- “Snow Solver” objects are supported.
- Tensor fields (e.g., for non-uniform thermal boundary conditions)
can now be connected to solid objects that have
dynamic sampling
enabled.
- The experimental “Void Solver” is supported.
- Windows is not a supported platform for simulation with multiple
GPUs. We only use a single GPU in that case.
- The property
dynamic sampling
of solid objects is
supported.
- The option
continuous particle size
of “Preon Solver”
objects and “Solid Volume Solver” objects is supported. This includes
adaptive sampling
, refinement and coarsening. Refinement
domains on the GPU only support refine_continuous
. Note
that “Pathlines” objects do not work with refinement and coarsening on
GPU in this release.
Sensors:
- Added HTC statistics to the thermal sensor for convective BC
mode.
- Added column for temperature and HTC measured by thermal sensor for
CSV export with convective BC.
- Pathlines: Added the possibility to show directions using
equidistant arrows.
Optimized
Solvers:
- Preon Solver: Reduced the GPU memory consumption when
gradient correction
is set to on.
- Improved the performance on GPU in scenes with many moving solids
with varying boundary particle counts.
- Improved the robustness of the thermal timestep limit computation in
cases of high thermal boundary condition parameters.
Snow solver:
- Improved the preconditioner in scenes containing several “Snow
Solver” objects that differ in
hardening coefficient
,
Young modulus
or Poisson's ratio
values. This
reduces iteration numbers and thus improves performance.
GUI:
- Improved visibiliy and readability of the global coordinate
axis.
Miscellaneous:
- Reduced memory consumption when simulating on the GPU by up to
10%.
- Improved scene loading speed considerably for scenes with a lot of
pathlines.
PreonPy:
- Improved performance when accessing the statistics of an object with
statistics
.
Changed
Solvers:
- Changed the timestep of a “Preon Solver” in combination with an
experimental “Void Solver” to be more conservative in case the
particle size
property differs or
continuous particle size
is used.
- Solid Volume Solver: The
maximal timestep
property is
not automatically adapted anymore due to changing the
spacing
of the solver. Furthermore, the default value has
been changed to 0.02
in a new scene.
- The
maximal timestep
is internally limited to the
smallest frame time interval defined via
simulation frame rate
(Scene object) or individual
frame rate
(object supporting this property).
Sensors:
- Quantity names for the CSV export of mesh-based sensors now follow
the same naming scheme as statistics.
- For the thermal sensor, renamed the
FluidTemperature
and SolidTemperature
outputs to
Reference Temperature
.
- The “Thermal Sensor” now always returns a positive value for heat
transfer coefficients.
- For the “Thermal Sensor”, renamed the property
global fluid temperature
to
global reference temperature
.
GUI:
- In the Plot Dialog, the range start/end properties are not editable
anymore if
auto update
is enabled.
- In the Plot Dialog, the right click action for copying the PreonPy
name for multisequence statistics (e.g., “Position”) can now be found on
the statistic entry (e.g., “Position”) instead of the sequence entry
(e.g., “Position X”).
- In the “Video Export” dialog, specify
playback speed
instead of input framerate
, and start time
and
end time
instead of start frame
and
end frame
. Furthermore, videos of type mp4
remain the only file type available for export.
FFmpeg File
has been moved to user preferences and is
no longer in the “Video Export”
- The position marker of the color gradient in the OSD stays visible
in case the minimum or maximum of the coloring range is reached.
Miscellaneous:
- The wall function property
thermal
is only visible now
if the thermodynamics boundary type
is set to
temperature
.
- Cameras now have the
orientation constraint
property
that replaces and extends the previous fixed view axis
property. It also now allows fixing the viewing direction of the camera,
which is enabled by default for orthographic cameras.
- Removed inconsistencies in the naming of the coloring property and
the respective label of the color gradient legend for solvers and
sensors.
- Object types now follow a common naming scheme, with each word
starting with a capitalized letter.
- The scale dragger tool now only has x-axis and z-axis draggers for
2D objects, and the value of the y component of the scaling vector
cannot be modified by the user. The dragger for the area source has been
modified to only have y-axis and z-axis draggers for a flat jet area
type and only a y-axis dragger for a conic one.
- Tensor Field: A re-sampling is now triggered automatically if the
field itself or its connected “Tensor Field Box” are transformed.
- The “Tensor Field Box” takes into account the rank when connected to
multiple air flows.
- Synchronized the labels shown for the values of the picked particles
and the color gradient legend.
Solids:
- The option
adaptive sampling
is now available without
activating dynamic sampling
and is supported on GPU.
- The
dynamic sampling
property of solids (enabled by
default) is now supported on GPU.
- Renamed the buffer
Thermal Sensor: Solid Temperature
to
Thermal Sensor: Temperature
.
- Added the prefix
Boundary Condition:
to the boundary
condition buffer names (ex: renamed Temperature
to
Boundary Condition: Temperature
).
PreonPy:
- The
names_of_measured_values()
method for sensors now
excludes quantities for which it is known that they are currently not
available.
- The
Scene.create_object
method now accepts the
typename
parameter in the new common naming scheme, where
each word starts with a capitalized letter. Old names will continue to
be accepted for some time to ensure a smoother transition.
- Removed the deprecation warning when
Object.get_connected_objects(…)
or
Object.get_connection_slots(…)
were called without setting
include_target_slot_name
to True
. We don’t
plan to change the default value in future versions.
- We now disallow the setting of arbitrary attributes in the
preonpy
module. This mainly prevents the use of misspelled
attribute names.
- Changed the default value of
as_scalars
of the PreonPy
method Object.statistic_buffers(…)
to be
False
. Therefore, scripts that do not specify that
parameter will behave the same as in version 7.0 when it is
removed.
- The
export_mesh()
method for pathlines now allows
specifying an export unit. The default export unit is meters.
Libraries and 3rd party
components:
- Added the svd3 library to be used in our solver code. Notice the
license files included with the installation.
- Updated the Qt library from 5.15.2 to 6.5.3. This license did not
change.
- Updated the CUDA version from 11.7 to 12.1.1 used by our CUDA
plugin. The licenses did not change.
Deprecation notices:
- The
Full
license was renamed to the Base
license in version 6.0. Starting with version 7.0, the PreonPy API and
the PreonCLI and PreonNode command-line interfaces will remove support
for the old naming scheme.
- The parameter
as_scalars
of the PreonPy method
Object.statistic_buffers(…)
is deprecated and will be
removed in version 7.0.
- The parameter
load_only_object_creations
of
preonpy.Scene(…)
is deprecated and will be removed in
version 7.0. Please consider using do_not_load_resources
instead.
- Passing a parameter other than
scene_path
as a
positional argument to preonpy.Scene(…)
is deprecated.
Starting with version 7.0, such a parameter will only be accepted as a
keyword argument.
- The PreonPy property
preonpy.current_scene
has been
deprecated since version 5.0. It will be removed in version 7.0. Please
use get_scenes()
and preonlab.current_scene
instead.
- The PreonPy property
preonpy.show_progressbar
has been
deprecated since version 5.2. It will be removed in version 7.0. Please
use preonpy.show_progress
instead.
- Support for loading scenes that are created with a version below 2.0
is deprecated.
Fixed
Solvers:
- Fixed issue that the stopping criterion for the position correction
solver was not evaluated correctly in all cases when using CPS in
combination with the option
prioritize fine particles
.
- Fixed an issue in the “Solid Volume Solver” where particles would be
deleted by a deletion domain, causing a mismatch between serialized
static positional data and transient thermal data.
- Thermal solver: Fixed a potential issue in the timestep estimation
when
thermal timestep limiter
was set to
diffusivity
and CPS was enabled.
- Fixed timestep computation for scenes containing multiple
experimental “Void Solvers”.
- Fixed that a “Void Solver” could reduce the timestep of a “Preon
Solver” even when the property
Time Stepping->adaptive
of the “Preon Solver” was set to off.
- Fixed that enabling
continuous particle size
could
reduce the timestep of a “Preon Solver” even when its property
Time Stepping->adaptive
was set to off.
- Fixed an issue for the position correction solver in cases where the
Time Stepping->adaptive
property was set to false.
- Fixed an issue where the
Avg. Velocity
statistic was
not computed correctly.
Snow Solver:
- Fixed a regression in which friction was applied twice, once
explicitly and once implicitly. Legacy scenes that suffer from this
regression will give you a warning and still apply the friction twice,
so that the behavior will not change with PreonLab 6.1. New scenes will
only apply it implicitly.
- Fixed an issue where adding two “Snow Solver” objects to a scene
would make the unsupported property
continuous particle size
appear in one of the solvers.
GUI:
- Fixed an issue in the property editor that some numerical properties
rejected the value
0
as input if several objects had been
selected.
- The
name
property of periodic boundary solvers is now
editable in the property editor.
- Fixed an issue that the GUI could end up in an invalid sceneless
state when opening a legacy scene and not opting for converting it.
- Fixed that in the Plot Dialog, the plot range properties could not
be adjusted manually while simulating.
- Fixed an issue in case
thermodynamics
was disabled but
temp. based viscosity
was still enabled.
- The lines of the grid shown in the OpenGL window now keep their
thickness regardless of the zoom level of the camera.
- Fixed that some objects returned by
preonlab.selection()
did not work correctly.
- Fixed a potential crash when executing scripts in the PreonLab
Console.
- Fixed an issue in the Plot Dialog where the labels of the time axis
were distored on some occasions.
- Fixed a bug where, in certain situations, the undo/redo buttons
weren’t disabled during property editing.
- Fixed an issue where expanding a box in the Connection Editor would
not paint it on top of all the (now) overlapping other boxes.
- Fixed an issue in the property editor where an outdated tooltip was
displayed for properties with no value.
Miscellaneous:
- The value given by memory statistics now correctly matches the
provided unit. Previously, the value was stated as given in MB but was
actually given in MiB.
- Preon Mesher: Fixed an issue in the “Mesh sequence” right-click
action that occurred if the connected solver used an individual frame
rate for serialization.
- Pathlines: Fixed an issue in the “Generate Pathlines” right-click
action that occurred if
individual frame rate
was
enabled.
- Fixed an issue where, in some cases, PreonCLI/PreonNode started
simulating on the CPU even if a GPU simulation was requested.
- Pathline mesh export: Fixed an issue with normals that would point
inward the generated mesh and reduced the number of generated triangles
in the exported mesh.
- Fixed various minor legacy loading issues.
- Removed noisy output when canceling a simulation in PreonCLI.
- Fixed the
Time Step
and Min. CFL Time Step
statistics, which were logged with an offset of one simulation
step.
- Fixed an issue with “Heat Field”, “Volume Sensor”, and “Box Domain”
objects that would not update their volume of interest after
substituting the connected mesh that would limit this volume.
- When exporting meshes on Linux systems, the file extension of the
type selected in save/export dialog is now automatically added to the
filename.
- Fixed an issue where particles got refined before being inside very
narrow cylindrical domains.
- Fixed the
Cum. Update
statistics in the OSD, which used
to take account of the simulation time only after it was logged.
- Fixed an issue if “Apply connected tensor field” was applied to a
solid in a scene where this was done before but the connection between
tensor field and solid was not saved.
- Fixed an issue that could lead to particle leakage after scene
reload of a solid with
adaptive sampling
enabled and
connected to a sensor collecting per-particle data (e.g., by enabling
track max pressure
in the “Force Sensor”).
- Fixed an issue in the Action Log messages regarding the “Set all
sub-properties to their default values” action.
PreonPy:
- Fixed exception raised when accessing statistics on a scene with
load_only_object_creations=True
. Now,
preonpy.DataNotAvailable
is raised instead of a
TypeError
.
- Fixed an error that
Statistic.display_unit
could be set
to units incompatible with the base unit of the statistic.
- Fixed crash in
Object.get_parent_group()
.
- Fixed an error in
Object.statistic_buffers(…)
in case
the object contains an Euler-angles statistic.
GPU:
- Fixed an issue where serialized temperature data of a “Solid Volume
Solver” would be loaded into CPU memory but not into GPU memory when
reloading a scene.
- Fixed a performance issue in the thermal solver caused by an
increased number of simulation steps when compared to the simulation run
on the CPU.
- Fixed an issue for multiphase simulations where the statistics for
implicit viscosity had only been written to the first solver.
- Fixed an issue with boundary handling for implicit viscosity when
the solid had a roughness value different from the default one.
- Fixed an issue where the positions of particles of the “Solid Volume
Solver” would not be updated after a simulation step.
- Sensor plane: Fixed an issue where statistics would not update
properly during simulation in case a “Solid Volume Solver” was
connected.
- Fixed an issue that occurred on simulation start in case an inactive
solver was connected to a “Sensor Plane”.
- Fixed an issue where the “Thermal Sensor” would not be notified
about a change in
Wall Function -> thermal
of a solid
object.
- Fixed the issue that the “Solver Particles” statistic of the scene
was only updated at full frames in GPU simulations.
- Fixed a GPU vs CPU discrepancy in the Drag Force model.
- Fixed a GPU vs CPU discrepancy in thermal simulations that affected
velocity-scripted particles.
- Fixed a GPU vs CPU discrepancy related to velocity-scripted
particles of the Preon Solver.
- Fixed an issue where a “Transform Group” connected to an inactive
“Solid Volume Solver” would trigger an exception.
- Fixed an issue when
improved RJ
is turned off.
Preon Renderer:
- Fixed a rare crash when rendering sensor planes.
Removed
Solvers:
- Removed that default connections were drawn between a “Solid Volume
Solver” and a “Box domain” or an “Outflow domain”.
- Removed the
maximal timestep
property of the “Void
Solver” that unintendedly influenced the “Preon Solver” timestep in rare
cases.
- Removed the unusable input slot “ThermalPower” from the “Void
Solver”.
Sensors:
- Removed the statistic
Culled Non-surface Particles
from
the “Height sensor” since it was only intended for internal use.
PreonPy:
- Removed the old API for retrieving statistic information (including
methods
get_statistic(…)
,
get_statistic_avg(…)
, get_statistic_min(…)
and
get_statistic_max(…)
). Please use the new Statistic API,
which can be reached via Object.statistic(…)
.
- Removed the 6.0 part from the legacy property name mapping.
- Removed usage of the mprop library.
- Removed support for Python 3.7.
[6.0.3] - 2023-09-26
GPU:
- Fixed an issue that could cause deviations from results achieved on
CPU for thermal simulations that had
boundary condition
set
to heat flux
in solids.
- Fixed an issue that the “Force sensor” measured incorrect values
when enabling
gradient correction
in the “Preon Solver”.
Also fixed a possible crash caused by the “Force sensor” related to this
issue.
- Fixed an issue that an exception was thrown when simulating a scene
with an inactive solver that was connected to a domain.
Miscellaneous:
- Fixed a performance issue that a “Vector field visualizer” connected
to non-transient airflows were updating in every simulation step.
- Fixed a crash that could occur in sensors with a
cell size
in cases the number of generated cells was too
high to fit into RAM or resulted in a texture too big to display by
introducing the property cell limit
.
PreonPy:
- Fixed a crash when using PreonCore objects that already got deleted
in the scene. The bug occurs only if the scene was opened with GPU
support. Furthermore, it only affects objects of type “Preon Solver”,
“Solid Volume Solver”, “Drag Force” and “Heat Field”. Now a
preonpy.ObjectInvalid
exception is thrown when using
them.
- Fixed a crash when using a
Statistic
object whose
associated simulation object has been deleted from the scene.
PreonNode:
- Removed erroneous output
Feature "Internal" is enabled.
logged by every node except the first one.
[6.0.2] - 2023-08-22
- Fixed the issue that the “Vector field visualizer” would not reflect
the updates within a transient air flow in case the simulation is run
headless, i.e. via PreonCLI, PreonNode or via PreonPy.
- Fixed a regression in the “Thermal sensor” in cases where
ignore dry areas
was enabled.
- Fixed extremely rare endless loop that could occur when loading a
.prstate
file.
- Fixed the
--continue
command-line argument when
starting simulations with PreonCLI.
- Fixed a crash that occurred when exporting a mesh containing texture
coordinates.
- Prevented a crash that occurred in multiphase simulations on GPU in
which the property
implicit viscosity
were not synchronized
across solvers. This is now checked and prevented by the GPU
compatibility check.
- Fixed emission issue that occurred in 2D and 1D simulations on
GPU.
- Fixed a legacy loading issue, where either a scene object’s property
or a statistic display unit had a rotational velocity unit entry with
its value set to
rpm
(rotations per minute).
[6.0.1] - 2023-07-26
Miscellaneous:
- Fixed a crash that could occur when trying to set a new
default scene directory
in the User Preferences with the
currently set default directory not existing.
- Fixed an issue that the default scene directory has not been created
on fresh installations of PreonLab.
- Removed the minimum size requirement from the dialog of the
installer which could cause problems on small displays.
GPU:
- Fixed the issue that a simulation could not be started on the GPU if
the
behaviour
property of a “Preon Solver” object was set
to inactive
.
- Fixed an issue that simulations with continuous particle size could
not be continued. Continuous particle size on the GPU in 6.0 does not
feature refinement and coarsening.
- Fixed an issue that the CFL timestep was too low when continuous
particle size was on. Continuous particle size on the GPU in 6.0 does
not feature refinement and coarsening.
- Fixed an issue that implicit viscosity would not use the correct
timestep.
[6.0.0] - 2023-07-03
Added
General:
- Added support for GPU-accelerated simulations using
CUDA. Please note that only a subset of features is currently
supported on the GPU. When starting a GPU simulation, PreonLab will give
feedback if the scene requires features that are not available on the
GPU yet.
Physics:
- Added the experimental
lateral adhesion
force
for modeling droplet sticking and run-off more
realistically.
Sources:
- Added the property
allow adaptive filling
to the
“Volume Source”. If enabled and if the receiving object uses CPS, the
source may emit coarser particles inside the volume. This option is only
available when using the quality
fill method.
- Fixed an issue where the
Emitted Volume
statistic from
the “Area Source” was sometimes reset to zero when resuming a
simulation.
- Added
Velocity
and Volume Flow Rate
statistics to the “Area source” object.
GUI:
- Added the possibility to copy images from the graphics window or
renderer dialog by adding copy icons to their respective toolbars.
- Added the ability to close a scene.
- Added the right-click action “Check GPU compatibility” to the
“Scene” object in order to check whether a scene is eligible for
simulation on the GPU with the currently supported feature set.
- Added right-click actions to open directories for the scene,
statistics, CSV files and simulation data, if present. They are grouped
into the “Open location” sub-menu.
- Added a switch to also consider the name of groups when searching
for a property in the property editor.
Sensors:
- Pathlines: Added the possibility to mesh and export the pathlines in
the chosen format through a right-click action.
- Volume sensor: Added a property
compression
that will
display the sampled compressed volume for compressible solvers if turned
on. Compressible solvers are the “Snow solver” and the “Preon Solver”
with implicit equation of state
enabled.
Miscellaneous:
- PreonCLI: Added a
--continue
parameter that allows a
previously canceled or otherwise stopped simulation to be continued
based on the last written scene statistics.
- PreonCLI/PreonNode: Added a
--featureOnGPU
parameter
for activating the GPU support.
- Added a right-click action to export one or multiple solid
geometries as a single mesh file.
- Added
Deleted Particles
,
Scripted Particles
and Cum. Deleted Particles
statistics to the “Box domain”, “Outflow domain” and “Maximum velocity
condition” domain objects.
- Added a
GPU Memory
statistic to the “Scene” object,
which tracks the amount of memory spent while simulating on the GPU.
Note that this does not account for memory spent on visualization (e.g.,
rendering).
PreonPy:
- Add support for Python 3.11.
- Added
statistic.sequences
for querying all the
sequences of a statistic as StatisticSequence
objects.
Those allow for querying and setting sequence properties like the
color.
- Added
preonpy.LicenseTypes.GPU
to be used in
preonpy.checkout_license(...)
calls and to be returned in
preonpy.get_license()
calls.
- Added
.values()
and .items()
accessor
methods to buffer sets.
- Added
export_mesh()
for preonpy.Pathlines
that meshes and exports the pathlines to a 3D file.
- Added
preonpy.set_features
to enable and disable
features. This is currently mainly used to enable GPU usage when PreonPy
is used as a package within a user-provided Python environment,
e.g. without using PreonCLI.
Optimized
GUI:
- Optimized in which scenarios the “Set/Remove (Transform) key”
actions are provided.
- Optimized the coloring of keyframed properties in the Property
Editor.
- When selecting an object, the Scene Inspector will scroll
automatically to the respective entry in the scene tree.
- Optimized the layout of property tooltips.
Changed
Preon Solver:
- Removed density-based coloring because it only gave correct results
when used during the simulation.
- Statistics include the average velocity now in addition to minimum
and maximum velocity.
Snow solver:
- Removed
clamp pressure
property.
- The property
dynamic sampling
is not visibile anymore
when choosing Impulse Boundary Handling
as it is always
off
in this case.
- Removed
Wall function
property group.
- Removed coloring options not related to the “Snow solver”.
GUI:
- Picking particles of downsampled solvers is prevented now, as they
have no direct simulation data attached to them.
- Renamed the licensing dialog menu item to “Licensing” and moved it
to the “Settings” menu.
- In the Property Editor, it is now possible to directly edit the
strings of vector-like properties.
- The right-click actions “Compute axis from points” and “Set
temperature” now ask for input values in the respective default unit
defined in the “Scene” object.
- On startup no empty scene will be created anymore.
- On scene load or scene creation, a progress bar is shown for as long
as it takes to not only load the scene but also load additional plugins.
The loading time for certain plugins, e.g., the GPU plugin of PreonLab,
may take longer when called for the first time.
- The export of particle data to the EnSight Gold format is now
universally available to all particle solver types (e.g. “Preon Solver”,
“Snow Solver”, “Solid Volume Solver”).
- Critical error messages are now always printed in the message
window.
- Changed the default target directory for export dialogs from the
PreonLab installation directory to the current scene directory.
- Heat Field: The properties
power
and
volumetric power
are not shown anymore as soon as a “Point
Cloud Resource” providing respective quantity is connected via the
TensorField
slot.
- Renamed the “Memory consumption” dialog, located under the “Help”
menu, to “System memory consumption”. For tracking GPU memory usage,
please refer to the
GPU memory
statistic of the
Scene
object.
- Renamed the per-object “Memory” statistic to “System Memory”.
Sources:
- Fixed the issue that an “Area Source” with seedpoint filling could
script the particles of other overlapping sources.
- The
script nearby particles
option for an “Area Source”
now only scripts particles in front of the source.
- Fixed
flow rate
for PipeFlow
the “Area
Source” so that the emitted volume matches the one expected.
Sensors:
- Force Sensor: Added a toggle
use rigid normals
to only
consider the normal components of the forces applied by the fluid
particles to compute pressure forces and torques.
- Deleted particle visualizer: Changed the name of property
scale
to particle scale
to avoid ambiguities
with the scale
transformation property.
Solids:
- The rotational velocity of scripted solids can now be specified in
different units. For that, the property
revolutions per second
has been renamed to
rotational velocity
, and the value for it can be specified
in all rotational velocity units, including rps
and
rpm
.
- Removed coloring options
number density
,
mass contribution
and memory location
.
MPI:
- Added workaround to avoid out of memory issue that could occur with
some MPI implementations during dynamic boundary sampling.
Miscellaneous:
- Air Pressure: The keyframes for distance-based air pressure mapping
now have to be stored in the
air pressure (distance)
property to avoid time-based evaluation in case
dist. based air pressure
is disabled.
- Preon Solver: The keyframes for temperature-based shear and bulk
viscosity mapping now have to be stored in the
shear viscosity (temperature)
and
bulk viscosity (temperature)
properties to avoid time-based
evaluation in case temp. based viscosity
is disabled.
- In case PreonCLI/PreonNode is called with
--lBoost=sim_threads_max
and not enough licenses are
available to cover all threads, it will cancel with an error message. In
earlier releases, only a warning was printed, and the simulation started
with fewer simulation threads than the system would provide. The user
should specify the exact number of additional simulation thread licenses
to cover the whole machine (e.g., --lBoost=10
).
- Better handling in case the environment variable
OMP_NUM_THREADS
is set to a value that is higher than the
number of available cores. As before, the number of actually used
threads will be reduced to the number of available cores. But now a
warning is logged, and the number of simulation thread licenses
requested will align with that number.
- Renamed the unit category
angular velocity
to
rotational velocity
.
- Updated the MSVC redistributable shipped with PreonLab. If PreonLab
is being used as a pre-installed package on Windows, it should be made
sure that the redistributable is manually installed. It is located under
the
vcredist
sub-folder of the pre-installed PreonLab
package.
- The
min/mid/max color range
properties are now given in
the unit that is selected in the respective unit
property.
- The import of keyrames and statistics now auto-detects and supports
the following delimiters: “;”, “,”, “:”, “|”, ” “,”0x09” and “~”.
- The
Full
license is now called the Base
license to better express its extendability with a GPU
license or licenses that extend the number of CPU simulation threads in
MPI contexts. The renaming is visible in the GUI of PreonLab, but also
in the preonpy.checkout_license
function of the PreonPy API
and in the -licenseMain
argument of
PreonCLI/PreonNode.
- Removed the possibility to create
Statistic resource
objects from the Add->Resource
menu. Such objects can
still be added using the
File->Import->Import Statistics
entry or by dragging
& dropping the resource file.
PreonPy:
- The function
statistic_names()
will now return the
names of all statistics, even if they have no data available.
Furthermore, the function will only return one statistic name per
vector-valued statistic. Example: Only Linear Velocity
will
be returned instead of Linear Velocity Norm
,
Linear Velocity X
, Linear Velocity Y
and
Linear Velocity Z
.
- Methods that take a physical argument as parameter now also allow
passing a
Quantity
object.
- The function
Scene.find_object
now returns the
Scene
object (in other words, it returns itself) if it is
called with "Scene"
. This is to allow the user to check in
a generic way if a name could be used by a new object.
Libraries and 3rd party
components:
- Updated the pybind11 library which powers our PreonPy Python
bindings from 2.9.0 to 2.10.1 in order to support Python 3.11. This
license did not change.
- Our CUDA plugin includes the following open source software: LLVM,
lz4 and PCRE. Notice the license files included with the
installation.
Fixed
Preon Solver:
- Fixed a bug in the Herschel-Bulkley viscosity model that prevented a
buffer from being created when switching the viscosity model while
simulation data was already present.
GUI:
- Fixed a bug where sometimes the “Messages” tab was not resized when
the message count changed.
- Fixed a bug in the Property Editor that for strings containing
several adjacent whitespace characters, only a single whitespace has
been rendered.
- Fixed a bug in the Plot Dialog image export that caused the plot
lines to be slightly offset.
- Fixed a bug in the presets manager that caused misleading warnings
about property synchronization to be printed.
- Fixed a bug where two objects were shown as selected in the Property
Editor when pasting a single “Area Source”.
- The value of the position marker of the color gradient in the OSD
now considers the unit set by the user (e.g., by means of the
unit
property in the Appearance->Coloring
group).
- Fixed that the
velocity storage implementation
of an
“Air Flow” could be keyframed.
- When changing the coloring mode, the
min/mid/max color range
properties in the Property Editor
are now updated immediately.
- Fixed a bug where the OSD had not been immediately updated when
changing a
Material
connection slot.
Sensors:
- Thermal Sensor: Fixed a bug where per-particle time-averaged
quantities would ignore the state of the property
ignore dry areas
.
- Thermal Sensor: Changed the reported value for dry areas on the
connected solid from
INFINITY
to NaN
in the
buffer access.
- Fixed a legacy loading issue for the “Volume sensor” object when
used with an arbitrary mesh in scenes created prior to 5.3, where a
fixed value was used instead of one based on the minimum particle
size.
- The
Velocity projection field
and
Height field
sensors don’t keep the previous OSD values
anymore if all particles have vanished from the considered volume.
Rigid body particle solver:
- Fixed a bug that the rigid body particle solver could not recover
after throwing an exception.
PreonPy:
- Fixed a potential crash in the
preonpy.Object.statistic_buffers
export functionality. The
crash happened when as_scalars=False
was used, where there
were some vector-valued statistics (e.g. with an X, Y and Z component)
and one of those vector statistics had no value at any point in the
statistic time range.
Miscellaneous:
- Fixed a bug where the axis-aligned bounding box of an object would
not be updated correctly after modifying its pivot.
- Fixed a bug where existing simulation data could be lost under
certain circumstances when saving an untitled scene to a network path
from a Windows system.
- Keyframes are now checked to be sorted according to time (or any
other key type) when imported from CSV files.
- Fixed an issue for scenes with multiple “Air Objects”, where one
thermally active “Air Object” would enable thermal interaction for all
“Air” objects in the scene, thermally active or not.
- Fixed an issue that occurred when connecting a “Tensor Field Box” to
a scaled “Acceleration Field” in that the box would not filter the field
correctly.
- Fixed an issue in the CSV export of statistics of multiple objects
at once where the column name would contain duplicate mentions of the
object a particular statistic belongs to.
- Fixed a rare issue where user-defined volumes (e.g., in a heat field
or volume sensor) classified points as outside when they were actually
inside the volume.
- Fixed a bug where disconnecting the
TriangleMesh
from a
“Heat Field” did not reset the volume to the volume determined by its
scale
parameters.
- Fixed the issue that sometimes a scene could not be opened while it
was simulated by another PreonNode, PreonCLI, or PreonLab process.
- Fixed an issue where turning on momentum wall functions on a solid
would apply them to all solids. Momentum wall functions are now applied
on a per-solid basis.
- Fixed an issue in the export of solver particles to the EnSight Gold
format where a frame containing zero particles (e.g., frame 0) would
generate warnings in external tools.
- Fixed a crash that would occur if an “Air Flow” object employing
volume data tried to query its data structures after loading of the
respective input files failed.
- The average temperature statistic of the “Solid Volume Solver” is
now mass-weighted.
- Objects other than the scene object now cannot be named “Scene”
anymore.
Removed
PreonPy:
- Removed the legacy handling mechanism for the following property
renamings:
adaptive spacing
to
continuous particle size
, min. spacing
to
min. particle size
, spacing
to
particle size
/max. particle size
,
coarse particles
to coarsen particles
and
source spacing
to particle size
. These
renamings were introduced in version 5.2.
Deprecation notices:
- The old API for retrieving statistic information (including methods
get_statistic(…)
, get_statistic_avg(…)
,
get_statistic_min(…)
and get_statistic_max(…)
)
will be removed in version 6.1. The new Statistic API, which can be
reached via Object.statistic(…)
, is now recommended to be
used instead.
[5.3.4] - 2023-04-28
- Fixed an issue where metered Simulation Thread licenses could not be
checked out. Metered licenses got introduced in 5.3. Non-metered
licenses are not affected.
- Fixed an issue that in some cases Simulation Threads licenses could
not be increased or decreased using PreonPy during application run.
License checkout at application start is not affected.
- Fixed an issue with saving a scene containing a multi-file STEP
assembly as
portable
(i.e., mesh files are copied into the
scene folder from External Resources
).
- Fixed an issue in the transform slot of the “Particle Tracker” where
the tracked particle’s position was not considered.
- Fixed an issue that prevented the pathline sensor to be duplicated
if one of its dimensions was too small.
[5.3.3] - 2023-03-21
- Fixed an issue in replaying transient air flows after saving and
reloading a scene that contains an “Air Flow” object.
- Fixed an issue where a user-specified velocity offset would not be
applied to the imported air flow when using Ensight Gold data files and
having “Use volume data” enabled on import.
- Fixed possible CPS stability issue caused by “Area Source”
emission.
- Fixed an issue with loop keyframes on “option” properties
(e.g.
behavior
) in that the loop keyframe would become
invalid after saving and reloading the scene.
- Fixed a bug for statistics resources that the statistics have not
been grouped correctly after loading a scene.
- Fixed an issue in mesh-based sensors where connecting them to an
inactive solid would lead to a crash when exporting per-sample
data.
- Fixed a bug that colors of vector statistics were not restored when
opening a scene.
[5.3.2] - 2023-03-03
- Fixed an issue with wall function values for moving rigids.
- Fixed an issue in the computation of the read-only
mass
property of the “Solid Volume Solver”.
- Fixed an issue regarding the emitted power of a “Heat Field” in case
it was applied to a “Preon Solver” with
continuous particle size
enabled and thermodynamics solved
implicitely.
- Fixed an issue regarding the
Cum. Emitted Energy
of a
“Heat Field” where the wrong timestep was applied to convert from power
to energy.
- Fixed an issue in point cloud resources where toggling
aabb from sample points
would only be considered on (re-)
importing the resource.
- Fixed an issue where sensors ignored solvers with particle sizes
higher than the lowest one.
continuous particle size
was
not affected by this.
[5.3.1] - 2023-01-12
- Fixed a synchronization issue when using a “Void Solver” in an MPI
simulation.
- Fixed an issue leading to an increased simulation step update time
when using one of the following objects: “Box domain”, “Heat Field”,
“Pathlines” or “Volume sensor”.
[5.3.0] - 2022-12-06
Added
GUI:
- Post-processing dialog: The list of objects can now be
filtered.
- Added a right-click action for mesh-based sensors to select their
corresponding solid objects.
- Added the tab
Action Log
to the tab bar in the lower
right of the main window. It lists all actions stored on the undo/redo
stack. The latest action applied to the scene is highlighted here.
Furthermore, the action log is saved to the scene folder on saving the
scene.
- The unit for the color gradient shown in the OSD can now be changed
by means of the
unit
property in the
Appearance->Coloring
group.
- The Plot Dialog now shows a tooltip with two kinds of temporal
averages when hovering over a graph:
Uniform Avg.
and
Time-weighted Avg.
. Uniform Avg.
is the
arithmetic mean of all sample points without weighting.
Time-weighted Avg.
takes into account the uneven
distributions of the data points in time. This averaging method assigns
to each data point a weight that is proportional to the summed time
differences between it and its neighboring data points.
Solvers:
- Solid Volume Solver: When the
heat capacity modifier
is
used, the temperature distribution inside a solid may converge faster,
making the physical time required to reach this state shorter.
- Refinement and deleted particles history are written to disk every
100 seconds. This prevents loss of data if the simulation is aborted by
killing the process.
Sensors:
- Thermal Sensor: Added the possibility to manually define a fluid
temperature for the computation of the global heat transfer
coefficient.
- Sensor Plane: The sensor plane is now able to measure the mass flow
rate and cumulative mass. Added the property
MassFlowRate
which shows the corresponding coloring.
- Volume sensor: The sensor now additionally measures the mass of the
connected fluid.
- Pathlines: Added the possibility to track particles for a range of
frames, instead of only a single frame.
- Pathlines: Added the possibility to track particles passing through
a volume defined via connected solids. The resolution of the volume
discretization is either automatically derived from the min. particle
size of the connected solver, or set manually using the new properties
manual volume grid cell size
and
volume grid cell size
.
PreonPy:
- Added support for
PathLike
objects such as
pathlib.Path
in all places where previously only
str
was accepted as a path.
- Added the possibility to specify the buffers that should be part of
a requested bufferset.
- Added the possibility to extract a particle’s color in the RGBA
format.
- Added
object.get_property_default()
for querying the
default value of a given property.
- Added
object.keyframe_sequence_names
which returns a
list of all keyframe sequence names of an object
in its
current state.
- Added
object.get_property_keyframe_sequence_names(property)
which
returns a list of all keyframe sequence names of the provided
property
of the object
in its current
state.
- Added
statistic.value_type
for querying the type of the
data this statistic stores.
- Added
statistic.has_data
for querying if the statistic
currently holds any data.
- Added the parameter
as_scalars
to
object.statistic_buffers
. When set to False
,
vector statistics will be exported as a single buffer containing vector
values instead of distinct buffers containing scalar values for each
vector component.
- Added
object.get_parent_group()
for querying the
Group
to which an object
is assigned.
- Added
object.is_property_keyable()
to test if keyframes
can be set for a property. Note that some properties are keyable but not
writable, i.e., they require the definition of keyframes for a
well-defined usage of the property.
- The
statistic.avg()
method now has a new optional
parameter weight
. By default, it is set to
WeightMode.UNIFORM
, which causes the function to return the
unweighted arithmetic mean. Alternatively, it can be set to
WeightMode.TIME
for time-weighted averaging.
Air flow (with
Ensight Gold data files as source):
- Import dialog: Check “Use volume data” to import the volumetric
information of unstructured three-dimensional polyhedral types (e.g.,
hexahedrons). This results in better preservation of the input
data.
- Added
optimise non-planarity
in the “Air flow” object,
which reduces interpolation artifacts in cases where the data set
contains volumes or cells with non-planar faces.
Miscellaneous:
- The value for the
volume grid cell size
is now
automatically derived based on the minimum particle size of a connected
particle provider for the “Heat field”, the “Box domain” and the “Volume
sensor” objects. A custom value can be set by toggling the
manual volume grid cell size
property, which is set to
Off
by default.
- Added support for metered licenses. Now it is possible to specify
the boost license model separately from the main license model for
PreonCLI and PreonNode using the
--licenseModelBoost
command-line parameter and for PreonPy the
license_model_boost
parameter for the
checkout_license
function.
Optimized
GUI:
- Improved the performance of the Plot Dialog for statistics with many
data points.
- Reduced computational overhead when having the Plot Dialog open
while simulating.
- Added the right-click action “Zoom to fit” to objects with a sense
of position within the scene.
PreonPy:
- Improved performance of
object.statistic_buffers()
in
case the fixed_time_interval
argument is
False
.
Changed
Vehicle Simulation Model:
- This object type has been changed to be an experimental
feature.
- Alleviated the 20 entries limitation in the
parameter set
property of the “Vehicle Simulation
Model”.
- It is now possible to load a scene pointing to a VSM project not
matching the loaded API binaries (or redistributables), providing the
chance to update the
project path
. A simulation is only
performed in case the VSM project and the loaded API binaries
match.
- Removed
Clip
, ForceField
and
Distance
connection slots.
- Disabled setting the simulation end automatically: The PreonLab
simulation will continue although the VSM simulation has ended.
Car Suspension Model:
- Removed
Distance
connection slots.
Preon Solver:
- It is now possible to use temperature-based density and the CPS
Particle Resampling (coarsening and refinement) at the same time.
- For performance reasons, Area sources that emit fluid intersecting
geometry are not handled by the CPS system anymore. Resulting
instabilities at the outflow must be resolved by adapting the source
setup.
GUI:
- The Plot Dialog is now able to simultaneously display statistics
from objects with different time samplings without the need to enable
fixed step
sampling.
- In the Plot Dialog, timings are now hidden by default. They can be
enabled by checking the respective check box.
- Removed the warning dialog that would show up when trying to change
the
simulation frame rate
or view frame rate
in the scene object or the individual frame rate
of, e.g.,
a sensor on a frame other than zero.
- Thermal sensor: Options for
coloring
are now limited to
the currently available measured quantities.
- Undo/redo actions are now disabled while editing a property.
- The time axis in the plot dialog now automatically chooses a unit
that is adequate for the given range. It is also possible to set a
specific unit manually.
- Editing a property in the property editor can now be aborted by
pressing the “Esc” key.
- “Import Tensor Field” dialog: Labels are now shown to the right of
the respective checkbox.
- The “Copy PreonPy name” right-click action is not displayed for
properties in the “Scene UI Settings” anymore, since they are not
accessible via PreonPy.
- Pathlines: The
thinning factor
property is visible only
if thinning
is enabled.
Sensors:
- The
FlowRate
property of sensor planes has been renamed
to VolumeFlowRate
.
PreonPy:
- The new
preonpy.Statistic
interface now supports
non-scalar statistics. For example,
object.statistic("Position").at(0).value
will now return a
preonpy.Vec3
object instead of a float
value
that just contains the norm.
- The
preonpy.Statistic.at(time)
method will now throw a
preonpy.DataNotAvailable
exception if the statistic has no
data at the given time point. Previously, a RuntimeError
exception had been thrown.
- The methods
object.get_connected_objects
and
object.get_connection_slots
now have an additional optional
argument include_target_slot_name
, which is set to
False
by default. Setting it to True
will
return a pair for each connected object containing the object as well as
its slot name.
- The
preonpy.get_license
function now returns a fourth
tuple element containing the boost license model.
Miscellaneous:
- Thermal sensor: Removed a spacing correction term in the computation
of the local heat transfer coefficient in accordance to the formula
provided in the manual.
- The right-click action “Apply connected tensor field” can now also
be applied to build-in solids (e.g. box). This action is only available
if
dynamic sampling
is disabled.
- In the unit system, the physical quantity
heat capacity
has been renamed to specific heat capacity
and
flow rate
has been renamed to
volume flow rate
.
- In cases where the volume of a “box domain”, “volume sensor” or
“heat field” is described via connected solids, the re-generation of
this volume after transforming these solids is now performed
automatically.
- It is not possible to set the scale of an object to
0
anymore.
- The connections
DeletionDomain
, which connected a
domain to a rigid, and RefinementDomain
, which connected a
domain and a solver, are merged into a single connection called
Region
, which can connect a domain to both solvers and
rigids. This affects the following domains: BoxDomain
,
CylindricalDomain
, MaximumVelocityCondition
and OutflowDomain
.
- The values of the property
types
for the domains
mentioned above (excluding MaximumVelocityCondition
)
deleteFluidParticles
, deleteRigidParticles
,
deleteSolidVolumeParticles
and deleteAll
are
unified into a deleteParticles
property value. The
information to which solver or rigid the domain should be applied is
encoded through the Region
connection. Per default, a
domain is connected with all existing solvers. Connections to existing
rigids should be made manually.
- The
convergence criterion
property of thermodynamics
solvers has been renamed to thermal timestep limiter
.
- When copying an object, the units and the colors of statistics are
now also carried over to the pasted object.
- Preon Renderer: Objects of type “Point Light”, “Directional Light”,
“Clipping Plane” and “Camera” are now rendered if visible.
- Removed the
render scripted particles
property for
solvers.
- PreonNode now writes all log messages during startup to the standard
output stream.
- If the last used license is not available, a list of all available
licenses to pick from is now shown.
- Removed the
Distance
, Transformation
and
Clip
connection slots from the “MaximumVelocityCondition”
object.
PreonNode:
- The statistic “Total Wait Time” now accumulates the time of the node
that had to wait the longest each simulation step.
- The simulation is now aborted if a required airflow or vector field
file is missing or invalid.
Fixed
PreonSolver:
CFL number
is not shown anymore for fluids that have
Timestepping -> adaptive
set to off.
CFL number
is not shown anymore in the “Void Solver” and
the “Solid Volume Solver” where it had no effect.
- Fixed that
DFV/DIP
solver would crash when using
CPS
or the old multi-solver based fluid refinement
system.
- Fixed potential stability issue when using MPI and CPS.
- Fixed possible leakage when sharing the same submesh of a mesh
resource in dynamically sampled rigids.
Sources
- Fixed emission issue when using a rotated or translated area source
with flat jet or cone area.
GUI:
- In the property editor, when changing a scene’s default unit, the
range for properties is now updated accordingly.
- Fixed an issue in the property editor that prevented setting the
value of a property to its range minimum when multiple objects had been
selected.
- Fixed an issue that the property editor showed some properties
erroneously as being keyframed when the
Scene
object has
been part of the object selection.
- Fixed an issue in the property editor that some groups had
erroneously been hidden when using the filter functionality.
- Fixed a potential crash when trying to import invalid or empty mesh
files.
- The scene is now shown as “modified” also when the unit or the color
of a statistic has changed.
- Fixed various vendor-specific issues in the GL rendering.
- Fixed an issue in the keyframe editor where the tooltip would not
show the display name of an enumerator property
(e.g.
behavior
) but a number.
- In the Scene Inspector, it is not possible anymore to enter the
object renaming mode for static objects.
- In the Scene Inspector, the “Show/Hide all in Group” right-click
action is working again.
- Fixed an issue in the “Vector Field Visualizer” where it would
update itself more than necessary.
Sensors:
- Fixed that the “Particle Tracker” would always render a particle
with
max. particle size
when using CPS
.
- Fixed that “Sensor mesh” and “Sensor plane” do not add “Temperature”
to the list of measurable values when enabling
thermodynamics
in a connected “Preon Solver”.
PreonPy:
- The
object.get_connection_slots
and
object.get_connected_objects
methods reference only objects
visible in the Scene Inspector.
Tensor Field Import:
- Fixed an issue where valid inputs for transient data were rejected
due to floating point inaccuracies.
- Fixed an issue introduced in PreonLab 5.2.4 where the local
transformation was not applied to point cloud resources.
Connection Editor:
- Fixed an issue where the connection editor showed/hid slots that
should not have been visible/hidden anymore.
MPI:
- Fixed Preon Renderer paticle coloring issue that occurred when using
automatic range coloring during an MPI simulation.
Miscellaneous:
- The
Scene
statistic “Licensed Threads” is now renamed
to “Tot. Licensed Threads” and is now also a total of threads over all
MPI nodes.
- Fixed an issue in the Plot Dialog with semi-transparent background
colors.
- Fixed an issue where a timestep of zero was suggested for an RBPS
simulation after a preceding simulation abortion due to an incorrect
scene setup.
- Fixed the issue that the “Clipping Plane” object was not rendered
correctly if switching the
shape type
to
Box
.
- Fixed an issue where pathlines would sometimes erroneously end after
coarsening.
- Fixed an issue where the PreonScenes directory was created although
a different default scene path was set in the User Preferences.
- When importing an existing
.stats
file as statistics
resource, the original representation of the statistic list is now
restored, i.e., vector statistics are grouped again.
- In case both
--licenseModel
and
--licenseBoost
command-line options are passed, the chosen
--licenseModel
is not ignored anymore.
- Fixed determinism issues when resetting simulations to
simulation start
and simulating again.
- In PreonCLI, if there is only a floating “Additional GUI” and a
node-locked “Additional GUI” available and neither
--licenseModel
nor --licenseMain
has been
specified, it is now ensured that the node-locked one is chosen.
- Fixed an issue in the Keyframe Editor that could occur when two
keyframes would have the same time key and spline interpolation was
enabled.
- Acceleration Field: Fixed an issue where the object´s own rotation
would not be applied to the imported acceleration vectors.
- Fixed an issue in the export of solver particles to the EnSight Gold
format where not all particles would be exported.
Removed
PreonPy:
- Removed support for Python 3.6.
[5.2.6] - 2022-11-09
- Fixed potential leakage when using multiphase, CPS and adaptive
boundary sampling.
[5.2.5] - 2022-10-19
Fixed
- Fixed an issue that two-way coupling and CSM/VSM didn’t work
correctly when using the old multi-solver based fluid refinement
system.
- Fixed an issue that the “Volume Sensor” didn’t use all available CPU
cores when
sub particle precision
was turned on.
- Improved stability when using
prioritize fine particles
in the “Preon Solver” (only relevant for CPS).
- Fixed the possibility for artifacts to occur when rendering fluids
with CPS using the “Preon Renderer”.
PreonPy:
- Fixed the return value of
get_property_type
for unit,
time and path properties.
[5.2.4] - 2022-09-26
Fixed
- Fixed a synchronization issue when using the “Solid Volume Solver”
in combination with MPI and CPS.
- Fixed a potential crash when having a point cloud resource connected
to a solid object with dynamic sampling enabled and re-importing the
resource using the respective right-click action of the point cloud
resource or when using undo/redo.
- Fixed a rare issue causing the “Vehicle Simulation Model” to throw
an error on trying to resume a simulation.
- Fixed an issue that sometimes too many solid particles were
generated when using CPS.
- Fixed an issue that the number of solid particles was sometimes
underreported in the scene statistics when using CPS.
- Fixed a potential crash in the Scene Inspector after an object
deletion.
- Fixed the issue that the “Preon Solver” printed error messages by
mistake when using temperature-dependent density and MPI.
[5.2.3] - 2022-08-11
Added
- It’s now possible to simulate vehicles featuring different wheel
tracks with the “Vehicle Simulation Model”.
- Added missing PreonPy API Documentation for the “Pathlines”
object.
Changed
- The option
adjust interface bulk modulus
is now not
disabled by default. Our recommendation is to use it in scenes where you
experience “Stuck Particles” deletion.
Fixed
- Fixed an issue with CPS where an “Area Source” connected to an
“Outflow Domain” via the connection “Flow Rate” would underestimate the
emitted volume.
- Fixed a possible crash when adding loop keyframes to the
simulation frame rate
or view frame rate
property of the “Scene” object.
- Fixed an issue in the automatic connection of a fifth clipping plane
to a camera.
- Fixed a crash that could happen in the PreonLab GUI when using
density
coloring
together with enabled
closed domain density correction
.
- Fixed an issue where the “Deleted particles visualizer” sometimes
didn’t show particles that exceeded the high pressure threshold.
- Fixed a crash when
adaptive sampling
is turned on and
the particle size
was changed to be uniform across all
solvers.
- Fixed possible leakage when using the old multi-solver based fluid
refinement system.
- Fixed an issue where applying the right-click action
Regenerate volume
would not extract the new value for
computing the volumetric power given the amount of Watts.
- Fixed experimental mode being enabled by default. This is a
regression which was introduced in version 5.2.2.
- Fixed inaccurate “Force Sensor” pressure values and incorrect “RBPS”
simulation results of a “Preon Solver” when the property
gradient correction
was turned on.
- Fixed a bug that the unit of timings could not be set to
“seconds”.
- Fixed crash when using the rigid body solver in combination with
adaptive fluid resolution and a solid with disabled dynamic
sampling.
[5.2.2] - 2022-07-08
Fixed
- Fixed an issue in PreonNode where a “Solid Volume Solver” would only
receive the generated particles of one of multiple connected “Solid
Volume Sources”.
- Fixed an issue in the “Particle tracker” where the line geometry
would be visualized at an incorrect position in the “Preon
renderer”.
- Fixed an issue in the pathlines export to CSV files where the
positions of the line geometry were saved in the local space of the
pathline object.
- Fixed a possible crash when deleting a “Thermal Sensor” that was
connected to a “Sensor Plane”.
- Fixed a precision issue that the “Cylindrical Domain” didn’t work
correctly at very small scales.
- Fixed an issue that particles were sometimes not refined correctly
when using multiple nested refinement domains.
- Fixed a visual artifact in the coloring of solids in case dynamic
sampling was enabled and a sensor connected.
- Fixed a possible crash when using the “Force Sensor” and non-uniform
fluid particle sizes.
- Fixed an issue that it was possible to use higher ratios from max.
to min. particle size than 8 in non-experimental mode. Higher ratios are
still possible but are considered experimental.
- The property
particle size
is now exposed for the
“Solid volume source”.
[5.2.1] - 2022-06-27
Fixed
- Fixed a crash while rendering when the
sdf method
of
“Preon Renderer” was set to ZB_DensityCorrected
.
- Fixed an issue when the
rendered particles target
in
the User Preferences was exceeded and when using continuous particle
size.
- Improved the performance of the coarsening algorithm when using
CPS.
- Fixed an issue in the “Vehicle Simulation Model” related to the
start frame
property.
- Optimized the order in which the geometrical setup of a VSM scene is
verified.
- Fixed that the property
max. new density error
was
shown although Time Stepping->adaptive
was set to
off.
- Fixed a crash when trying to manage presets on the
Scene
object.
[5.2.0] - 2022-06-09
Added
PreonSolver:
- Added the option
continuous particle size
that
enables per-particle sizes. This allows to use per-particle
sizes within a single solver object and replaces the old multi-object
approach. It also supports a higher ratio between particle sizes and
continuous coarsening. If this property is enabled, the new property
min. particle size
sets the minimal allowed particle size
of the solver while max. particle size
sets the maximum. A
specific particle size can be enforced in regions of the simulation
using a domain object.
- Added the option
adjust interface bulk modulus
allowing the usage of physical values for phases. It also
decreases particle deletion and improves refinement performance. This is
only relevant when using implicit equation of state
.
- Added the property
contact angle
for solids to the
cohesion model
CSS
.
- Added the option
pressure guided timestep
which adjusts
the timestep in very dynamic scenes not only based on the predicted
velocity field but also taking the pressure Poisson equation into
account. This can reduce particle deletion. The new property
max. new density error
regulates the newly incoming density
error allowed before the solve. The timestep this criterion determines
is logged as a statistic Time Step: Dynamic Limit
.
- Added a statistic
Time Step: Explicit Viscosity
that
now shows a separate statistic for the time step that is determined when
the property Viscosity -> implicit
is turned off.
- Added the property
prioritize fine particles
to
Pressure Solver->Density Invariant Solver
. This is only
relevant when using continuous particle size
and gives a
higher weight to finer particles when computing the average density
error guiding the abort criterion. This can improve the simulation
quality in scenes with a high ratio between
min. particle size
and
max. particle size
.
- Added a coloring option that allows to color particles according to
their size.
Domains:
- Added the action type
refine_continuous
that should be
used in combination with a solver with enabled
continuous particle size
. If this is chosen, the new
property target particle size
can be used to select a
particle size within the domain region.
Sensors:
- Sensor plane and Sensor mesh: Added the ability to connect “Solid
Volume Solvers” in order to measure the temperature values of their
particles.
- Resulting forces of the
cohesion model
named
CSS
on rigids are now also displayed in the “Force Sensor”
under the category Adhesion
.
GUI:
- In the Plot Dialog, added the option to export statistics to our
internal binary format. Previously, only CSV export was supported.
- In the statistics tree of the Plot Dialog, it is now possible to
change the unit of all statistics in a group at once.
- Added drag-and-drop support for statistics and CSV files to directly
import these files as Statistic Resource objects.
- It is now possible to define custom presets for each type of
object.
PreonPy:
- Added triangle mesh access for rigid type objects.
- Added support for Python 3.10.
- Added
object.statistics
that returns a list of
statistics provided in the newer preonpy.Statistic
interface.
- Added
statistic.name
,
statistic.quantity_name
and
statistic.reduction_type
which return the full name, the
quantity name, and the reduction type abbreviation of a given statistic,
respectively.
- The
Scene.import_mesh
method now supports importing
STEP files. The method extends the list of arguments giving you access
to set the linear and angular deflection tessellation parameters.
- Added
Scene.get_files
for retrieving all existing files
that belong to the scene.
Miscellaneous:
- Added the new object type “Vehicle Simulation Model” which
realizes a co-simulation with AVL VSM™ for an improved car suspension
modeling, all-new virtual driving and track interaction.
- Added the new object type “Heat Field” which allows to add
or remove heat to or from thermally enabled particles located in a
specified volume. Connect it with a point cloud resource for
the ability to apply a non-uniform power distribution.
- Added support for the STEP file
format. On import, the STEP file is tessellated before being
loaded into PreonLab. For guiding the tessellation algorithm, we provide
two parameters:
linear deflection
and
angular deflection
. The mesh resource now contains two
read-only properties number of triangles
and
number of vertices
. This way, you can do a rough inspection
of the tessellated STEP geometry. Be aware that the STEP import is an
expensive operation and import times would be magnitudes larger than
importing a mesh from the currently used formats such as OBJ, PLY and
STL. If you want to re-tessellate an already imported STEP mesh
resource, you could do that by right-clicking the mesh resource in
question and clicking the “Re-tessellate” menu item. It would let you
enter different values for the linear and angular deflections.
- Added a PRMESH file format (with the
.prmesh
extension). This is a binary file format for storing mesh data.
The format offers faster loading times (compared to the conventional
mesh file formats) due to its data layout specifically tailored for
PreonLab as well as a small file size due to its binary representation
and the use of compression. You can convert a mesh file on import to the
PRMESH file format using the new Convert to 'prmesh'
checkbox in the mesh import dialog, or convert already imported mesh
resource objects via a right-click action. Note that you can only
convert meshes that have a resource object connected to them.
- Added the property
rank
to the “Air Flow” object.
Particles located within multiple air flow fields will only experience
the drag forces of fields with the highest rank.
- PreonLab now prints CPU info on Linux systems at program start.
- In the “Point Cloud Resource”, enable
aabb from sample points
if you want a tight-fitting
axis-aligned bounding box without support radius around your sample
points. This option is also available in tensor fields
(e.g. “Acceleration Field” or “Air Flow”) if the
velocity storage implementation
is set
Gridless
.
- Added
mode
and version
fields in the
status file (--statusFile
). The mode
field can
be of value postprocess
or simulate
, depending
on which type of run was invoked. version
will have the
value 1.1
and will update with future changes to this
file.
Changed
Preon Solver:
- Renamed the property
spacing
to
particle size
.
- Changed the default maximum timestep, increasing it for low particle
sizes and decreasing it for higher particle sizes. This improves
performance for small-scale scenes and improves stability for
large-scale scenes. When using
continuous particle size
,
setting adapt max timestep to particle size
lowers the
maximum timestep dynamically according to the actual smallest existing
particle in the simulation.
- The property
temp. based density
is now experimental.
It utilizes continuous particle size and achieves more accurate
simulation results compared to previous versions.
- The
cohesion model
named CSS
is not marked
as experimental anymore.
GUI:
- The number of clipping planes is now limited to five per camera.
Previously, warnings have been thrown if the user added more than five
clipping planes to the scene.
- The
Recent Scenes
menu now displays the last 10 used
scenes instead of 5.
- In the Plot Dialog, the objects in the statistics list are now
sorted by their names. Furthermore, statistics for vector quantities
form a group now.
- Improved the look and feel of the plot axis in the Plot Dialog.
- When changing to or from a GPU license while a scene is open, you
will now be prompted to close the scene first.
Miscellaneous:
- Dynamic sampling can now be enabled for solids in combination with
thermal boundary conditions.
- Temperatures defined in particle sources are now assigned to created
particles even when thermodynamics is enabled only later during the
simulation via keyframing.
- The unit for performance timings can now be set independently of the
unit used for time quantities.
- The
average conductivity
property of thermodynamics
solvers has been renamed to conductivity mean
, providing
the two options Arithmetic
and Harmonic
. The
first option corresponds to the previous On
value and the
second option to the previous Off
value.
- The condition type
deleteSolidVolumeParticles
has been
added to domains which delete particles of a “Solid Volume Solver”.
- The “Thermal sensor” now only shows statistics that are relevant for
the current tracking mode.
- It is now possible to open a scene in PreonLab with a “Mesh
resource” object that references a broken or corrupted mesh file. An
error message will be shown. On PreonNode invocations or when calling
PreonCLI with a scene file, it will fail on start.
- The
quantity type
property of a “Point cloud resource”
cannot be changed anymore as soon as its outgoing Field
slot is connected to an ingoing Tensor field
slot of
another object.
- Volume sensor: If a solid mesh is connected, the resulting bounding
volume is now shown fully opaque together with the bounding box line
geometry of the volume sensor.
- Volume sensor: Changed the default size of 1.0m to 0.02m in the
bounding volume generation in case a solid mesh is connected to a volume
sensor before a solver is connected.
- The color chosen for statistics is now saved to the
.prscene
file instead of the .stats
file. With
this change, the color is preserved when clearing the simulation data
and when transferring the scene file.
PreonPy:
preonpy.Statistic.display_unit
,
preonpy.Statistic.base_unit
and
preonpy.Statistic.internal_unit
raised an
IndexError
exception in case the underlying statistic did
not exist. This is now changed to raise a
preonpy.StatisticNotAvailable
exception to be consistent
with the other methods provided by the Statistic
class.
- Added a
preonpy.show_progress
attribute which is
enabled per default. When enabled, it prints a status log per frame for
long-running tasks such as simulate
,
post_process
or exporting a CSV file. The behaviour
substitutes the previously shown progress bar for the long-running
tasks, which required the progressbar2
package. This
requirement is not needed anymore. Previously, the non-existence of the
progressbar2
package disabled logging which is not true
anymore. The preonpy.show_progress
attribute should be used
instead of preonpy.show_progressbar
attribute, which is
deprecated and will be removed in future versions.
preonpy.Scene.import_mesh
raises an
InvalidFileError
exception, when the import has
failed.
PreonNode:
- Removed the option
particleBasedLoadBalancing
since
particle-based load balancing is now the default. Furthermore, the
guiding particle-count-based metric was optimized to predict the
computational effort more accurately.
- Added the option
timingBasedLoadBalancing
which enables
the timings-based load balancer in previous PreonLab versions. This is
now only recommended when using MPI nodes that vary in computation
speed.
Optimized
- Preon Solver: Improved the performance when using the
Quality
cohesion mode by up to 15%.
- PreonPy: Improved the property access performance.
- Plot Dialog: Improved the startup time of the dialog when many
objects are selected.
- Improved the MPI load balancer splitting strategy for scenes with
sparsely distributed fluid particles.
- Mesh import: Improved the import time for files containing multiple
sub-meshes with the
single mesh
option disabled.
Fixed
Preon Solver:
- Fixed the issue that setting the maximum timestep to the default
value did not work correctly for custom particle sizes.
- Fixed the issue that temperature-based quantities did not get
updated when loading a scene without simulating it.
Sensors:
- Fixed the issue that “Pathlines” didn’t track refined or coarsened
particles correctly. This fix is only available when using the new
continuous particle size feature.
- Fixed the issue that the “Thermal sensor” would yield wrong values
in post-processing mode when solids overlapped each other.
GUI:
- The right-click action for setting a transform key is now also
offered for the
euler angles
property. Previously, it had
only been available for the position
and scale
properties.
- Fixed the issue that the “Remove key” right-click action in the
property editor had not been offered for certain properties although
they had a keyframe set.
- Fixed a crash in the Plot Dialog when clicking on an object that
does not contain any statistics at all.
- Fixed the issue that when exporting statistics from the Plot Dialog,
the header of the exported CSV file did not show the correct unit(s) if
it had been manually changed before.
- Buffer names visible to the user, e.g., via particle picking,
particle tracking or export of particle data now follow the naming
conventions of the statistics.
Rigid body solver:
- Fixed an issue that occurred when using two-way coupling, refinement
and continuous particle size.
- Fixed inaccurate “Potential Energy” statistics for dynamic rigid
bodies.
Preon Renderer:
- Fixed an issue that exclusive-range rendering did not work when
rendering single particles with “Preon Renderer”.
- Fixes an issue that objects didn’t update correctly when using a
higher view frame rate than simulation frame rate.
Miscellaneous:
- Fixed a crash when duplicating an “Open boundary plane” with CTRL +
D.
- Fixed an issue where the “Open boundary plane” could miss the latest
state of the “Preon Solver”.
- Fixed an issue that occurred if loop keyframes have been employed in
the
simulation frame rate
or view frame rate
property of the “Scene” object.
- Fixed an issue where domains set to
deleteFluidParticles
would also delete particles of a
“Solid Volume Solver”.
- Removed an error message with respect to
QBasicTimer
shown in the error log when closing the Plot Dialog, and fixed the
potential problems it would have caused.
- Fixed the issue that area source backplane could influence rigid
body simulations.
- Fixed an issue when using crop-left operations on “Solid Volume
Solver” objects.
- Fixed the issue in the “Solid Volume Solver” that an optimization
reducing the required disk space was not applied in MPI
simulations.
- Fixed the formatting of the license table which is printed when
calling PreonCLI or PreonNode with
--licenseList
.
PreonNode:
- Fixed a simulation quality issue when using MPI and the
Herschel-Bulkley
viscosity model.
- Fixed an issue where cumulative statistics would start off with an
outdated statistic.
PreonPy:
- Fixed the issue that
delete_object
would not clean up
the memory of deleted objects correctly.
[5.1.4] - 2022-02-07
Fixed
- Fixed a crash that occurred on applying a deletion domain to a
porous rigid and the deletion having its domain defined by a solid
connected via the
TriangleMesh
connection slot.
- Fixed a crash in the Plot Dialog when accidentally trying to set the
color for a non-statistic tree item.
- Fixed stability issue when using Periodic Boundary Conditions and
MPI.
[5.1.3] - 2022-01-19
Fixed
- Fixed a possible PreonNode crash on startup when using MPICH on
Linux.
- Fixed a potential (and rare) crash when using local refinement and
MPI.
- Fixed a rare crash when using solvers with different spacings (but
no refinement) and MPI.
- Fixed a potential MPI timeout when using
closed domain correction
in the “Preon Solver”.
- Fixes an issue in the video export dialog that OpenGL view frames
could not be assembled into a video anymore.
- Fixed an issue where the “Export sample data to CSV file” action
would not work correctly for some sensors with
individual frame rate
enabled.
- Fixed a crash when using periodic boundary conditions and gradient
correction.
[5.1.2] - 2021-11-30
Fixed
- Improved accuracy of flow rate and summed volume measurements when
using adaptive resolution for the sensor plane and sensor mesh.
- Fixed an issue in the Keyframe Editor where adding new keyframes via
double-clicking the mouse would also update the value range of the graph
view instantly.
[5.1.1] - 2021-11-12
Fixed
- Fixed a crash in the Keyframe Editor that occurred on using CTRL + Z
to undo the generation of a keyframe.
- Fixed that the
adhesion
property of solids was hidden
in the Property Editor when no “Preon Solver” was present.
- Fixed issue that preonmpiadapter.sh failed to compile on IBM
Platform MPI.
- Fixed issue that “Preon renderer” did not render solver objects
belonging to the same refined fluid as one when post-processing.
- Fixed a bug that occurred when using looped keyframes in
position control mode
s velocity
and
acceleration
and revolutions_PerSecond
in the
orientation control mode
.
- Fixed an issue that differing spacings were also allowed for snow
solvers.
- Fixed issue that during post-processing, the velocity of
position-keyframed objects in some occasions could have been different
to the one used during the simulation when having adaptive
timestepping.
[5.1.0] - 2021-11-08
Added
Preon Solver:
- Added the experimental
cohesion model
CSS
which uses a Continuum Surface Stress (CSS)
formulation. For now, it supports exactly two phases and
boundary.
- Added experimental “Void Solver” that can be used to model a force
that pulls fluid particles into voids.
- Added right-click action “Create periodic boundary conditions” that
inserts a “Periodic boundary solver” and two “Periodic boundary planes”,
and sets up all the required connections.
Snow solver:
- Added a Jacobi preconditioner which decreases computation
time by up to 5 and improves stability. The preconditioner is enabled by
default and can be toggled off via the property
use preconditioner
.
Solid Volume Solver:
- The solid volume solver now supports adaptive
resolution.
Sources:
- Particles emitted by an Area or Volume source can now be
initialized with a temperature distribution by connecting a “Point cloud
resource” via the
TensorField
slot.
- The Area source now supports user-defined velocity profiles
provided by a “Point cloud resource”
- Added predefined pipeflow velocity profile for the Area source.
GUI:
- The
Scene
object now allows defining the
default units to be used for the statistics and physical quantities of
all objects in the scene. The default units for new scenes can be set in
the user preferences.
- The list of properties in the Property Editor can now be filtered to
quickly find properties by name, by value or by unit.
- All solvers now support the right-click action “Export state to CSV
file” (e.g. the “Solid Volume Solver”, too).
Sensors:
- Thermal sensor: On sample data export or PreonPy buffer access,
thermal quantities can be added from connected “Point cloud resource”
objects in areas where no thermal interaction took place (i.e. “dry”
areas).
Plot Dialog:
- Added the possibility to jump to the corresponding frame when
clicking on the plot by activating the “Update time on click”
option.
- Added an option, “Group by statistic instead of object”, for
alternative representation of the statistics tree where the statistics
are first grouped by name and afterwards by object.
- In the statistics list, selecting a node now also selects all of its
descendants. Moreover, deselecting a node also deselects all
descendants.
- In the statistics list, nodes are now shown as selected if at least
on of its children is selected.
- Filtering the statistics list now also considers names of the
ancestor nodes in the tree.
- Changing the units of statistics is now persistent between
openings of the same scene. When the selected unit for a statistic
diverges from the scene’s default unit for the respective type of
quantity, the unit is serialized to the scene file.
- The list of statistics available for an object is now visible before
starting the simulation.
PreonPy
- Added
object.statistic_buffers()
for fast
statistics access.
- Added
object.associated_scene()
for convenient access
to the underlying scene.
- Added
object.is_property_writable()
to test if a
property is writeable.
- Added
preonlab.selection()
for accessing the list of
objects that is are currently selected in PreonLab. Because it relates
to the UI, this is only available in the PreonLab Console.
- Added
global_transform()
for accessing the global
transformation matrix of an object. It can be used on
preonpy.Rigid
and preonpy.SensorPlane
objects.
- Restructured PreonPy API documentation such that it contains less
duplicated parts.
- Added
object.particle_buffers_list
for Solvers and
Solids. It will return multiple buffersets for
preonpy.Rigid
with dynamic sampling
turned on.
In all other cases, it will return a list with just one element.
- Added
get_line_data
for preonpy.Pathlines
that provides buffer access to pathline data.
- Added
preonpy.Quantity
as a utility type
holding a value together with a unit and providing unit
conversion.
- Added
preonpy.Statistic
as interface for querying a
statistic. It will return results as preonpy.Quantity
instead of plain values. It can be obtained by calling
object.statistic("statistic_name")
.
- Added
preonpy.get_property("property_name")
for getting
property values as preonpy.Quantity
.
- Added the possibility to set properties with quantities or tuples
(e.g.
solver["spacing"] = 5, "mm"
).
- It is now possible to pass
preonpy.Quantity
objects of
type time
to a lot of methods like
e.g. Scene.simulate
.
Miscellaneous:
- Added the support to reserve certain amount of licenses for
machines or users through RLM’s
RESERVE
option.
- Thermo solver: Added the
convergence criterion
property
that allows switching between different formulations of the time step
estimation.
- Point cloud resource: Added the ability to import a heat
flux distribution and map it to a solid’s surface as the thermal
boundary condition.
- Added a
--statusFile
option to PreonNode and
PreonCLI for passing a file in which the current status and progress of
a simulation or postprocessing run is written.
- Added the option to enable an
individual frame rate
for
solvers. This allows serializing data with a different
simulation frame rate
than defined in the scene
object.
- Added the option to enable an
individual frame rate
for
“Preon renderer” objects. This allows creating images with a different
view frame rate
than defined in the “Scene” object.
- Added the option to enable an
individual frame rate
in
a sensor. This allows to update/export a sensor with a different
view frame rate
than defined in the “Scene” object.
- Added right-click actions “Create refinement solver (level 1)” and
“Create refinement solver (level 2)” to all solvers that support
refinement.
- Added
surface proximity
fill type to volume
generating objects like the Volume Source or the Box Domain. The primary
application of this is to refine inside a narrow band around a geometry
surface.
- Added support for cancelling a simulation/post-processing run using
an abort file. During a simulation or post-processing, if a file named
ABORT.txt
is placed in the simulation’s working directory,
the run will be aborted after the end of the current frame and the
placed abort file will automatically be removed.
- Added a new download format for PreonNode which comes bundled with
OpenMPI.
- Added a new download format which contains all
Preon binaries for both, Windows and Linux. It does not contain
an installer but can simply be unzipped.
- Added logging of scene statistics (the ones shown in the OSD) of a
simulation for PreonNode and PreonCLI. We log these statistics at each
frame, and the logging is turned on per default and could be switched
off using the
--no-progress
CLI option. Using the
--logProgressEveryNthFrame
one could log only at every
n
frames.
- Added the option
automate cell size
to the “Sensor
plane” which synchronizes the cell size with the lowest connected solver
spacing at all times.
Changed
Preon Solver:
- Improved pressure solver stability when using adaptive
resolution.
- Blocks of refined particles are now rotated according to the
velocity of the original coarser particle, which reduced grid-like
patterns.
- Added property
refine to transition level threshold
that controls when very coarse particles are refined due to neighboring
very fine particles.
- The properties
max high density particles
and
high density threshold
are available again when using
adaptive resolution.
- Slightly tweaked cohesion, viscosity and thermodynamics models when
using adaptive resolution.
- It is now possible to use different spacings for different
solvers. Spacings are not synchronized automatically
anymore.
- Improved the model for wall functions. In addition, the y+ value is
now capped to 300 which is the generally accepted validity range in the
literature. Previous y+ calculations would allow arbitrarily large
values of y+ beyond the validity range.
Solid Volume Solver:
- The OSD with sim statistics is now shown per default.
- Changed the
default_coloring
to the palette of
rgb_coloring
and removed the latter.
- Changed the default coloring mode from
velocity
to
temperature
.
- Removed the property groups
Deletion Criteria
and
Density computation
from this object type.
- Removed coloring options that were undefined for this object
type.
- Removed the right-click actions “Create refinement domain (level 1)”
and “Create refinement domain (level 2)” from this object type.
GUI:
- Scene Inspector: Pressing the icon beside the name of an object
toggles its visibility.
- Scene Inspector: The names of the object groups are now considered
when searching for objects via the Scene Inspector.
- Postprocessing dialog: Renderers are only listed as objects to
post-process if at least one camera is connected.
- Changed the naming of the coloring option
temperature
for a solid to boundary type
. Depending on the thermal
boundary condition, it will color according to a
constant temperature
or constant heat flux
.
This coloring option is not available if the boundary type
is set to None
.
- In the Plot Dialog, min/max/avg statistics for the same quantity are
now grouped together.
- Added right-click action “Copy PreonPy name” for statistics in the
Plot Dialog. It has the same functionality as the corresponding action
in the Property Editor.
Sensors:
- The “Pathlines” sensor now supports tracking particles that
have been refined or coarsened. Please note that this is not possible
for old simulation data created with PreonLab 5.0 or
older.
- In the “Thermal sensor”, the OSD label for time-averaged quantities
was changed from
Agv. <quantity>
to
Time-avg. <quantity>
.
- Deleted particles visualizer: Renamed statistic names
Cum. deleted particles
to
Cum. Deleted Particles
, Cum. High pressure
to
Cum. Deleted High Pressure Particles
,
Cum. Stuck
to Cum. Deleted Stuck Particles
and
Cum. CFL violation
to
Cum. Deleted CFL Violating Particles
.
Domains:
- Periodic boundaries can now be used with adaptive
resolution.
- “Outflow domains” now reach the target flow rate more reliably. The
“Outflow domain” object has been changed to be an experimental feature.
The manual before referred to it as a prototype.
Miscellaneous:
- Fixed an issue that could occur if the
behavior
of a
solid was set to cache
and keyframes were defined regarding
the transformation of the solid.
- Tensor Field import dialog: The dialog now asks for the unit of the
respective physical quantity to be imported (e.g. of velocity) and not
only for the distance part of it.
- Point cloud resource: Added the property
quantity type
that specifies the physical quantity that is imported via the resource.
Based on this type, the outgoing TensorField
slot name is
changed to indicate what the resource is able to provide,
e.g. VelocityField
.
- The connection types
VelocityField
and
TemperatureSamples
have been replaced by the more general
type TensorField
.
- The tensor data import from Ensight Gold files is not aborted if a
time set number is provided in the
.case
file for
non-transient geometry or variable files, but simply ignored.
- All properties holding a unit now represent the unit by its
abbreviation (e.g.,
mm
). Previously, some properties used
the full unit name (e.g, Millimeter
).
- Removed support for the length units
Decimeter
and
Inch
, as well as for the temperature unit
Fahrenheit
.
- Improved the visualization of the “Periodic boundary plane” by
switching to a coordinate-axis like representation to make it easier to
position it correctly.
- The “Periodic boundary solver” and the respective “Periodic boundary
plane” are not marked as experimental anymore.
- The “Y+ sensor” and all properties in the property group
Wall Function
of the fluid solvers and solid objects are
not marked as experimental anymore.
- Opening scenes with old simulation data, where statistics do not
contain unit information, will cause an error, and subsequently not load
the affected statistics. This applies to statistic files generated with
PreonLab prior to v3.2.
- For the “Periodic boundary solver”, the properties of group
Appearance
are now visible in the Property Editor.
- On adding a “Solid Volume Source”, no default connections are drawn
to existing meshes anymore.
- The default value for the property
automatic resize
of
a “Solid Volume Source” has been changed to Off
.
- When specifying invalid licensing options, PreonNode and PreonCLI
will now quit with return value of
1
instead of using the
default licensing policy.
- Removed the live update of the value of a property in the Property
Editor while one of its keys is dragged in the Keyframe Editor.
- Removed the
wireframe
option from property
render mode
for all particle solvers.
- Renamed the
coloring
mode none
to
uniform
.
PreonPy:
- Disabled properties cannot be accessed anymore.
- If
particle_buffers
was called on a solid with
dynamic sampling
turned on, a RuntimeError
was
raised. Now a preonpy.SubsamplingError
is raised
instead.
- Added
get_property_grouping
for querying the grouping
used in PreonLab’s Property Editor from PreonPy.
- All properties and method arguments representing a unit now expect
the unit to be given in its abbreviation form (e.g,
mm
).
Previously, some properties and methods expected the unit to be
represented by its full name (e.g., Millimeter
).
Optimized:
Preon Solver:
- Improved performance when using adaptive resolution by up to
20%.
Fixed
Solvers:
- Fixed a rare issue that refined fluid particles could leak through
geometries when pausing and resuming a simulation.
Preon Solver:
- Fixed a crash that could occur when pausing the simulation,
inserting a refinement domain and resuming the simulation.
- Fixed crash when using very small spacings (less than 4e-06) and
adaptive resolution.
Thermo Solver:
- Fixed an issue that occurred when a solid’s
boundary type
was set to heat flux
and
Thermodynamics->implicit
was enabled in a solver.
GUI:
- Generating multiple pathlines shows only one frame range dialog box,
whereas previously it appeared for each of the selected “Pathlines”
objects.
- Fixed an issue in the Property Editor that when pressing certain
keys on the keyboard, the column value could disappear.
- Fixed an issue in the Keyframe Editor that the tooltip showing the
current value did not vanish after closing the dialog.
- Fixed an issue where the properties in group
Thermo Solver
would not be forwarded to the implicit
thermodynamics solver.
- The OSD of a mesh-based sensor will not display a color legend or
any stats as soon as one removes the
TriangleMesh
connection to the solid or the Particles
connection to the
solver(s) anymore.
- Fixed an issue that some scene properties had been marked as
modified when opening a scene, although their value corresponded to
their default value.
- Fixed an issue when clicking on the “Show curve” right-click action
in the Property Editor for properties that consist of multiple parts
(e.g.
position
).
Sensors:
- Fixed that the “Volume Sensor” would show the 3D volume of a 2D
solver when the property
sub particle precision
was
activated.
- Deleted particles visualizer: Fixed mismatch between simulation and
playback.
Miscellaneous:
- Added unit to statistics of particle deletion domains.
- When executing scripts via the PreonCLI or the PreonLab Console, the
exit()
function will behave similarly to the Python
interpreter and will not raise an error.
- If more than one “Solid volume source” is connected to a “Solid
Volume Solver”, the generated particles of both sources are now added to
the solver.
- Fixed an issue where changing the
constant temperature
for the boundary type temperature
in a solid would not be
considered in a simulation run after saving and reloading.
- Fixed an issue in the “Periodic boundary solver” that for
overlapping boundary planes, only one boundary particle has been
generated in total instead of one for each plane.
- Fixed an issue where a “Periodic boundary solver” would use
adhesion
when it should have used cohesion
instead.
- Sources are now automatically connected to the only “Preon Solver”
in the scene even if there is an additional “Periodic boundary solver”.
Previously, the existence of the other solver prevented the connections
to be drawn automatically.
- Fixed an issue where fluid leakage could occur in scenes containing
a fluid solver with multiple refinement levels, solids with
dynamic sampling
enabled and adaptive sampling
disabled, and extended per-particle solid data (e.g. via a defined
thermal boundary condition or via a sensor which collects per-particle
data like max pressure in the force sensor).
- Fixed an issue in the CSV import of keyframes for properties with
identical names that are only differentiated by their property group
name (e.g.
Front::nonlinear spring force
).
- Fixed a bug that the “Particle tracker” did not show the trajectory
of the particle anymore.
- Fixed a bug in the Keyframe Editor that for some properties,
keyframes could not be moved via mouse dragging.
- Keyframe Editor: “Update time on click” can be used while having a
property with locked keyframes selected.
- Fixed a bug that the “Point cloud resource” did not apply the offset
set by the user in the import dialog.
- Fixed crash when picking a rigid particle and then triggering a
rigid resampling (for instance by changing the thermodynamics boundary
type).
[5.0.4] - 2021-08-31
Fixed
- Fixed an issue when using refinement and temperature-dependent
viscosity or temperature-dependent density.
- The “Thermal sensor” will only measure the conjugate heat transfer
if the following preconditions are fulfilled: a) it is connected to a
solid with thermal
boundary tpye
set to None
b) a “Solid Volume Solver” and a thermally enabled fluid solver are
connected to the “Particles” slot of the sensor.
- Fixed a crash in the “Thermal sensor” where the conjugate heat
transfer would be computed between a “Solid Volume Solver” and a fluid
solver, but
thermodynamics
was not enabled in the fluid
solver.
- Fixed a bug in the “Solid Volume Solver” that prevented the
temperature buffer to be written to disk with lossless compression.
- Fixed an issue in the “Thermal sensor” when using refinement and
fluid particles with coarser spacings are observed by the sensor.
- Fixed an issue that the min and max pressure statistic of the “Preon
Solver” could be incorrect when using MPI.
- The number of particles statistic in the scene is now available at
substeps when using MPI.
- Fixed a crash that occurred when connecting a “Solid volume solver”
to a “Y+ sensor” via the
Particles
slot.
[5.0.3] - 2021-07-23
Fixed
- Renamed the property
Pressure Solver->Density Invariant Solver->density error
back to its intended name. It had wrongly been renamed to
Density Error
.
- Added the option “disableThreadBinding” to PreonLab, PreonCLI and
PreonNode which disables automatic thread binding.
- Added “New Y+ Sensor” to right-click action “Connect Sensor” of
rigids.
- Fixed an issue where the total heat content of a solume volume
solver would be incorrectly shown to be zero in specific cases.
- Fixed an issue in the force sensor statistics in cases where the
following is used: momentum wall function; Herschel-Bulkley viscosity
model; temperature-based viscosity.
- Fixed an MPI timeout in cases where the property
script nearby particles
of the area source is active.
- Fixed a possible MPI timeout during scene loading.
- Fixed an issue that calling the PreonPy method
Scene.import_mesh
with a relative path leaves the property
pointing to the respective file with the path relative to the working
directory. Now, an absolute path, or a path relative to the scene
directory in case the file is inside the scene directory, is used.
[5.0.2] - 2021-05-27
Fixed
- Fixed a crash in the Keyframe Editor when toggling “Update time on
click” and no property was selected.
- Fixed an issue that the timeline could update to an incorrect frame
using the “Update time on click” feature in the Keyframe Editor if the
view frame rate differed from the simulation frame rate.
- Fixed vendor-specific crash when starting PreonLab on a GPU from
AMD.
- Fixed an issue that it was possible to insert a Periodic Boundary
Solver into a scene that already contains a Snow Solver.
- Fixed an issue with the automatic resize of the “Solid Volume
Source” in cases where an “Area Source” was present.
- Fixed a crash when switching the property
behavior
of a
solver mid-simulation.
- Fixed issue that it was possible to connect multiple “Preon Solvers”
to a “Periodic Boundary Solver”.
- Fixed issue that fluid leakage could occur in scenes that contain
some solids with
adaptive sampling
enabled and others with
adaptive sampling
disabled.
- Fixed a “Solid Volume Solver” initialization issue.
- Fixed a link in the About dialog.
- Fixed a crash when a “Y+ sensor” was connected to a rigid in a scene
without a solver.
[5.0.1] - 2021-05-14
Fixed
- Fixed a bug that cumulative timing statistics of the scene had been
reset when resuming a simulation.
- Disabling
show osd
in the Scene UI Settings now also
disables the OSD in the video output again.
- Fixed a bug that horizontal scrollbars where unreactive if the
scrollable content was only marginally larger than the scroll area.
[5.0.0] - 2021-05-03
Added
Preon solver:
- It is now possible to use three particle levels (instead of
just two). Three levels are only supported in combination with
the new
Continuous
correction method.
- The option
sampling correction method
determines how
the solver deals with artificial density errors, usually introduced by
refinement, coarsening or initialization. Continuous
is
always used for adaptive simulations and will correct these errors over
multiple time steps. Instant
is the default for uniform
simulations and is equal to the behavior in 4.3.3.
- Enabling the option
optimize for closed domain
can
improve the quality of simulations in fully filled, closed domains.
- The option
closed domain density correction
slightly
adjusts particle densities to ensure a fully filled domain. This option
is only available if optimize for closed domain
is
enabled.
- Added experimental thermal and momentum wall functions. They
use the “Law of Wall” to correct the heat flux and shear force in a
coarsely resolved scene, respectively.
- Reduced the number of pressure solver iterations by up to
30%. Turning off the
improved RJ
property reverts
to the behavior in 4.3.3.
- Added the
Adaptive Resampling
properties
steps between simplifications
,
merge max. vel deviation
and
merge max. relative vel deviation
that specify when
particles can be merged in an adaptive simulation.
- Added average pressure statistic.
- Added presets for air and oil (with code
“5W30”).
Snow solver:
- Added a so-called “greedy initial guess system” which needs
fewer iterations for comparable accuracy. The
warm start
option was removed in favor of this automated
system.
Solid volume solver:
- Added an experimental “Solid Volume Solver”. It
computes thermal quantities on particles representing the volume of a
solid and can be used for conjugate heat transfer computations.
Sources:
- Added an experimental “Solid Volume Source” which must be used to
generate particles for the experimental solid volume solver.
- Added the option
correct area discretization
to the
area source that slightly increases the outflow velocity to counter the
discretization error of the area.
- Added the option
script nearby particles
to the area
source that can help to stabilize the outflow of the source for
continuous emission.
Domains:
- Replaced the
refine
condition type with the types
refine_level1
and refine_level2
specifying the
desired refinement level.
- Added the experimental “Periodic boundary solver” and “Periodic
boundary plane”, which allow to add periodic boundary conditions to the
simulation.
Solids:
- Added the boundary type
heat flux
to the
thermodynamics properties. If set, the user can provide a
constant heat flux
as the boundary condition.
- Added a right-click action “Connect Sensor” which allows to connect
rigids to new or existing sensors of the following types: “Force
sensor”, “Thermal sensor”, “Height sensor”, “Wetting sensor” and “Sensor
mesh”.
- Added the option
adaptive sampling
that enables or
disables the potential usage of adaptive sampling when using a fluid
with multiple refinement levels. This is enabled by default and can
improve memory consumption and performance.
Sensors:
- The new sensor “Deleted particles visualizer” renders those
particles that were deleted by the solvers to which it is connected
to. This allows to detect issues in the simulation setup or
solver parameterization.
- Added the experimental “Y+ Sensor” to visualize wall
function resolution.
- The “Thermal sensor” (formerly “Heat flux sensor”) now checks for
the applied thermal boundary condition on the connected solid object and
measures corresponding quantities.
- The “Thermal sensor” can now observe the conjugate heat
transfer between a solid volume solver and a fluid solver.
- The “Thermal sensor” accepts the connection of both, liquid solvers
(e.g. fluid) as well as solid volume solvers.
- Added the property
track surface normal
to the “Thermal
sensor”. If enabled, surface normals are added to the list of quantities
that can be exported.
- Added fluid temperatures to the list of quantities that can be
exported from the “Thermal sensor”.
- The name of the “Air Flow Visualizer” has been changed to “Vector
Field Visualizer”. It now also works with “Acceleration Fields”. The
connection was renamed to “VectorField” accordingly.
- Added the property
track max shear stress
to the “Force
sensor”.
- Added the connection slot “CenterOfRotation” to the “Force sensor”.
This slot accepts incoming “Transform” connections. If connected, the
sensor will use the global position of the connected object as the
center of rotation during torque computations.
GUI:
- Add a new bright color style for the user interface to
complement the existing dark mode. The mode can be switched in the user
preferences.
- Added a right-click action “Add badpoint” for the “Volume
source”.
- Added right-click actions to create “Group” objects, to move
objects to existing groups and to remove object from
groups.
- Extended the mesh import dialog with options to create a
“solid group for each file” or to create “one solid group for all
files”.
- In the “License Information” dialog, the labels of available license
options are more descriptive now.
Connection Editor:
- The Connection Editor will now by default group objects
together if they are part of a “Group” object. This feature can
be turned off via the “Autogrouping” checkbox.
- If all objects that are part of the same group are also
grouped together in the Connection Editor, the displayed box will
contain the name of the “Group” object.
- By default, if a “Group” is selected in the scene inspector,
its sub-objects are also shown in the Connection Editor. This
behavior can be changed via the “Also grouped objects” checkbox in the
Connection Editor.
- Added a “Form group” button to create a group box based on
“Group” object assignments.
- Categorized the slot filter section in order to quickly view or hide
many slots with one click.
Keyframe Editor:
- Added a right-click action in the properties table to delete all
keyframes of the selected keyed and unlocked properties.
Miscellaneous:
- Added initial support for solver plugins.
- Added the
Acceleration Field
object to the
Force Fields
object group to allow the user to specify
additional accelerations that PreonLab
should respect. It
supports static and transient data over the new
Tensor Field Import
.
PreonPy:
- Added support for having multiple scenes opened at the same
time.
- Added the
close_existing
argument to the
preonpy.Scene
constructor to specify what should happen
with currently opened scenes. Also preonpy.multiple_scenes
can be used to set the default behavior if close_existing
was not passed.
- For a point cloud resource,
import_from_csv
can be
called to read temperatures or velocities from CSV files.
- For rigids,
apply_connected_point_cloud
can be called
to map a temperature field onto its surface particles.
- As a replacement for the
current_scene
property, the
function get_scenes()
(and for the PreonLab Console the
property preonlab.current_scene
) was added.
- When using PreonPy as a Python package (e.g. not inside PreonLab or
PreonCLI), it is now possible to select the favored license without
first checking out another one.
- Added
preonpy.set_log_dir
and
preonpy.get_log_dir
for specifying where log files should
be written.
- Added
set_default_scene_dir
and
get_default_scene_dir
for specifying where new scenes
should be created.
- Added
preonpy.Group
as a container for groups.
- Added support for Python 3.9.
- Removed support for Python 3.5.
Air Flow
and AccelerationField
are now
exposed in PreonPy. Added import_from_csv
option similar to
PointCloudResource
.
- Added Type Annotations for better IDE support and better
documentation.
PreonNode:
- Added a
--continue
parameter that allows a previously
canceled or otherwise stopped simulation to be continued based on the
last written scene statistics.
Tensor Field Import:
- The import structure of tensor fields has been generalized
and is accessible through
File->Import->Import Tensor Field
. Supported
are Airflow, Acceleration, Velocity, Temperature. Transient data uses
the same import.
- It is now possible to crop imported transient data, i.e., to define
a smaller time range than was imported using the
Start Time
and End Time
properties.
- Added the ability to loop (i.e., repeat) the transient data
arbitrarily many times by defining a
Duration
greater than
End Time
- Start Time
.
- Added the ability to
Offset
the time range that
specified by the data to be imported.
- Added a right-click action to airflows and acceleration fields to
import data for an existing object.
- Added a user option for transient data to
Use Existing Data
such that the conversion process to
.prtensor
can be (partially) skipped if the files are
already present.
Changed
Preon solver:
- Removed support for the loading of
.prstate
files that
were created with versions older than PreonLab 1.0
- Refinement is now always restricted to the defined refinement
domains. All collider options related to refinement “buffer zones” are
removed. This usually significantly reduces the total number of
particles.
- Unphysical pressure forces could be significantly reduced in regions
where particles of different sizes interact.
- Reduced the effect that fine particles “creep” between coarse
particles and boundary in an unphysical way.
- Improved the quality of the cohesion in regions where particles of
different sizes interact.
- The simplification algorithm now supports resampling of regions in
which fine and coarse particles are mixed. This typically decreases the
overall particle count.
- Removed the optimization that scripted particles which are not
contributing to the simulation are excluded from internal data
structures. As a result, these particles are now visible to sensors. We
recommend to use coarser particles sizes in these regions to improve the
performance.
- The limit of one thousand keyframes for temperature-based shear
viscosity and bulk viscosity as well as density has been removed.
- Thermodynamics is enabled or disabled by using the new toggle
property
thermodynamics
. It replaces the old
system type
property. If the removed system type
isolated
is loaded from an old scene, thermodynamics is set
to Off
in this case.
Snow solver:
- The default
tolerance
of the “Elastic Solver” has been
lowered to 0.001 (previously 0.01).
Sources:
- The Volume source now ignores its z scale for 2D simulations.
Solids:
- Renamed the property
system type
to
boundary type
.
- Renamed the property
temperature
to
constant temperature
.
- Changed the boundary type
ClosedFixed
to
temperature
. The property constant temperature
can only be set as a boundary condition if this particular system type
is set.
Sensors:
- Changed the name of the
Heat flux sensor
to
Thermal sensor
.
- Removed the property
physical value
from the force
sensor. The decision on which physical value to display is now defined
by the coloring mode alone.
Rendering:
- The “Preon Renderer” now always uses the
Density_Adaptive
signed distance field method for fluids
with different particle sizes as sdf method
. This means
that multiple refinement levels are always rendered as one fluid if they
have the same material.
GUI:
- The graphical user interface has been refreshed and the
usability improved.
- Dialogs follow now the visual style of the main window, with
a toolbar on the top and the settings docked to the right.
- In the Plot Dialog and the Keyframe Editor, zoom using the mouse is
anchored on the mouse cursor (for wheel and right-click-drag).
- Removed the “Type” column from the scene inspector. The type of an
object is now shown in the tooltip.
- The filter in the “Scene Inspector” hides group items (ex:
categories) for which all children are filtered out.
- Right-click actions on selected objects will now always be
applied to all objects in the selection.
- Changed the category name of solvers from
Fluids
to
Solvers
in the scene inspector and in the menu entry
“Add”.
- When clicking the “Arrange” icon in the Connection Editor, the
positions for all objects that are not visible are cleared.
- The playback/postprocess start and end markers in the timeline are
now shown regardless of the chosen mode.
- Replaced the “Windows” menu by a “View” menu that only allows to
switch between single view and quad view.
Plot Dialog:
- Statistic names and Plot Dialog settings have been moved to the
right of the plot view.
- Statistics are now grouped by objects.
- The
Save Image
button now displays the object’s name as
a title and a legend.
- Added
Copy Image
button which exports the image to the
clipboard (this also works with Ctrl+C
).
- Added settings to the user preferences that let you choose between
using theme colors or user-defined colors for image export.
Keyframe Editor:
- If a keyframe sequence is locked, the keys are no longer shown in
the view of the curve. This improves readability and performance.
- When hovering or clicking on a loop segment, the original key and
segment responsible for this part of the looped segment are
highlighted/selected. Similar, if a segment is selected that is looped,
the looped part is also highlighted.
- Only the selected keyframes instead of all are now copied.
- The unit is now shown in more places in the Keyframe Editor.
- The list of properties can now be filtered to quickly get to the
intended property.
Car Suspension Model:
- Renamed the property
car body mass
to
sprung mass
.
- Renamed the options for the
reference point
from
axleLoad
and uncompressedSpring
to
compressed state
and uncompressed state
,
respectively.
- Renamed the property
mapped unit
to
mapped
.
- Renamed the options for the property
mapped
from
NewtonPerMeter
and Newton
to
Coefficient
and Force
, respectively.
- Grouped the per-wheel suspension parameters for the wheels at the
front axle and rear axle into property groups
Front
and
Rear
, respectively. Note the changed PreonPy names.
- Grouped the general properties for nonlinear suspension modeling
into the new property groups
Nonlinear Springs
and
Nonlinear Dampers
.
- Removed the property
parameter input
. The per-wheel
suspension parameters have to be provided for the wheels at the front
axle and the wheels at the rear axle separately.
Miscellaneous:
- Changed statistics names across all object types so that
they follow a consistent naming scheme.
- Updated the Alembic library to version 1.7.16 and the OpenEXR
library to version 2.5.3.
- It is not necessary or recommended to specify the OMP_PLACES and
OMP_PROC_BIND environment variables anymore. PreonNode, PreonPy and
PreonLab will automatically set up the thread binding if
appropriate.
- Thermodynamics in the air object is enabled or disabled by using the
new toggle property
thermodynamics
. It replaces the old
system type
property.
- Removed the
Bullet
plugin from the available
Rigid body solvers
.
- Improved the error message in case no license could be found at
all.
PreonPy:
- By default, existing scenes will not get closed anymore. You can set
preonpy.multiple_scenes = False
or pass
close_existing=True
to the preonpy.Scene
constructor to get the old behavior again.
- When using PreonPy as a Python package (e.g. not inside PreonLab or
PreonCLI), a license is not checked out directly after executing
import preonpy
anymore.
Optimized
GUI:
- Optimized the “Scene Inspector” filtering performance for scenes
with many objects.
- Optimized the performance of the “Keyframe Editor” when displaying
large number of keyframes. Among general performance improvements, the
single keyframe points will not be displayed if there are more than
25000 keyframes. Furthermore, the curve will not be anti-aliased in this
case.
Miscellaneous:
- Improved the performance of particle encoding/saving.
- Improved the performance when using the “Density_Adaptive” method in
the Preon Renderer.
Fixed
Snow Solver:
- Impulse Boundary Handling: Fixed an issue where collided particles
were not generating elastic forces for their neighbors.
Solvers:
- The total heat content of the particles of a solver is now given
with zero Kelvin as the reference point (as opposed to zero degree
Celsius before).
Sources:
- The
Quality
filling mode of the Volume Source now works
correctly for 2D.
- Fixed an issue that let fine particles may pass through area sources
in adaptive simulations.
Sensors:
- Fixed an issue where wetting sensors could generate data that was
out of sync with the associated solid particles and could not be loaded
later.
GUI:
- Fixed an issue where the right-click action “Set pivot to mean
position” did not create an undo/redo event.
- Fixed an issue where PreonLab would fail silently if no valid GL
context could be created. A warning message is now shown.
- Fixed an “Empty filename passed to function” warning that can appear
when using file dialogs.
- The OSD is now updated immediately when an object is been
renamed.
Plot Dialog:
- The zoom now locks before the plot lines disappear.
Keyframe Editor:
- Fixed the issue that the Keyframe Editor did not update if a
property with no keyframes is shown and the property value is changed in
the Property Editor.
- Fixed the issue that CTRL-double clicking on an enum while having
selected multiple rows changes the other rows even though no change was
intended.
- Fixed the issue that the curve after a loop keyframe was always
drawn as a linear curve.
- Fixed the issue that inserting invalid x-values in the keyframe
table resulted in 0. Instead, no change is applied now.
- Fixed the issue that right-click actions in the properties table did
not act on all selected properties.
Miscellaneous:
- Fixed a Preon Renderer issue that shadows casted by fluids sometimes
showed visual artifacts.
- The first solver in a scene does not longer need to be active when
simulating multiphase simulations.
- Fixed the
--logDir
parameter for PreonNode.
- Fixed an issue in the CSV export of per-particle sensor data that
could lead to negative position values being rounded.
- Fixed the issue that it was possible to create or delete connections
during a simulation, which could lead to crashes.
Tensor Field Import:
- If only a subset of the transient data described in the Ensight Gold
format is imported into the Air flow object, omitted frames would not be
interpreted as missing frames.
Deprecation notices:
- Statistic names across different object types have been harmonized.
If you use the old statistic names via PreonPy, you will get a
deprecation warning.
- The PreonPy property
current_scene
will be removed in
one of the upcoming releases. Please use get_scenes()
and
preonlab.current_scene
.
[4.3.3] - 2021-01-29
Fixed
- Fixed a bug that the “Scene” object was not editable with the
graphical user interface anymore.
[4.3.2] - 2021-01-28
Fixed
- Fixed crash when loading a scene that contains a height sensor
connected to a rigid, but no Preon Solver.
- Fixed possible crash caused by the Volume Sensor after inserting a
Preon Solver.
- Fixed snow solver fallbacks that were triggered when using a
user-specified number of minimum iterations although the solver was
below residual.
- Fixed a bug in the transient airflow import in the case where a
static geometry is imported and
smooth input
is
enabled.
- Fixed a crash on trying to delete the “Scene” object.
- Fixed a warning that has been printed when trying to rename the
“Scene” or “Scene UI Settings” objects.
[4.3.1] - 2020-12-15
Fixed
- Fixed a rare crash in the keyframe editor when switching the order
of looped keyframes.
- Improved the performance of keyframe interpolation.
- Fixed an issue where the list of (filtered) statistics in the Plot
dialog would not update correctly after renaming or deleting an
object.
- Fixed a simulation stability issue that occurred when emitting fine
particles from an area source that are simplified near the outflow.
- Fixed a crash in the opening of the keyframe editor when the object
previously held by it has been deleted.
- Fixed an issue where connecting two solvers, one thermally active
the other thermally inactive, to a heat flux sensor would lead to a
crash in multiphase simulations.
[4.3.0] - 2020-10-30
Added
Preon solver:
- Added a new experimental solver type “DFV/DIP” that supports fast
and continuous local refinement.
Sensors:
- Heat flux sensor: Added the properties
track avg. heat flux
and track avg. HTC
that
compute the average heat flux or HTC per sample point over an elapsed
time period.
- The height sensor now also optionally exports the normals that have
been used to
preonpy.BufferSet
s or CSV files.
Sources:
- Added the properties
use max volume
and
max volume
to the volume source that can limit the amount
of volume that is generated by the volume source.
Plot dialog:
- Added a button to reload data from hard-disk.
- Added a checkbox to make persistent selections.
- Added a checkbox to show only selected statistics.
- Added a filter field to quickly find a certain
statistic.
- For each statistic, it is now possible to choose the unit
used for drawing the plot.
- Improved the numerical precision of the averaging computations.
Keyframe editor:
- Added a right-click action to define loops over arbitrary
many keyframes. The keyframe interval is repeated until a
defined point in time. Multiple non-overlapping loop intervals can be
defined per keyframe sequence.
- Added a right-click action to move the selected keyframes by a
specified time.
- Added a right-click action to duplicate the selected keyframes and
move them by a specified time.
- The keyframe editor now also shows the values of the
keyframes in the table.
Property editor:
- Improved the workflow for the property editor when having
selected multiple objects. If the properties differ from object
to object, all property values are shown now. It is now furthermore
possible to change a single dimension of a vector for all selected
objects at once. Also, right-click actions are now applicable in
multi-selection mode.
- Keyframe-related right-click actions are now also available for
subproperties (e.g, the
x
,y
and z
subproperties of the position
property).
Scene inspector:
- It is now possible to rename objects through the Scene Inspector by
double clicking or pressing F2. Navigation using tab in edit mode is
also supported.
Miscellaneous:
- Airflow import dialog: Added the possibility to smooth Ensight Gold
input data.
- Airflow import via Ensight Gold: Samples with identical positions
are merged into one sample per geometric part and their velocities are
averaged. This can prevent an endless loop when using the
Gridless
mode as
velocity storage implementation
.
- Added the possibility to set a custom log directory for PreonNode
and PreonCLI via the
--logDir
option.
PreonPy:
particle_buffers()
can now be accessed for the Snow
Solver.
Changed
Preon solver:
- Particles deleted because a NaN value occurred in their position now
contribute to the
particles deleted by solver
statistic.
- Most performance timings are not available anymore as per-solver
statistics. Instead, the summed effort across all Preon solvers is now
reported in the scene statistics for various solver steps.
Miscellaneous:
- Airflow import: Added support for frame number wildcards as part of
the file extension for transient data.
- Changed the property name
live csv export
to
live CSV export
.
- Changed the property name
csv file
to
CSV file
. This read-only property is only available in
PreonPy.
- Changed property name
noninear damper coefficient (rear)
to
nonlinear damper coefficient (rear)
.
- Removed the
record statistics
property.
- The data on the hard disk is now immediately deleted when closing an
untitled scene instead of when a new untitled scene is created.
- Open boundary planes can (and must) now be connected to a specific
solver via the
BoundaryDomain
slot.
- Improved the accuracy of the velocity prediction method used by the
car suspension model that influences two-way coupling with the
fluid.
- The installers now suggest “PreonLab VERSION” as start menu
directory name on both, Linux and Windows, where “VERSION” is replaced
by, e.g., “4.3”.
- The installers now suggest “@HomeDir@/PreonLab_VERSION” (Linux) and
“@ApplicationsDirX64@/PreonLab_VERSION”
(Windows) as installation directories where “VERSION” is replaced by,
e.g., “4.3”.
- Changed the Python version shipped with PreonLab and PreonCLI from
3.5 to 3.8.
- Removed the
specify thread affinity
option from the
scene settings.
- PreonNode now allows up to 4 instances running on the same machine
when not passing
--noPerformanceChecks
. This allows to
spawn one process per socket on most multi-socket systems without
passing --noPerformanceChecks
.
- Renamed the render mode option
smoothShaded
to
visible
.
- Renamed the coloring properties for solids and fluids,
e.g.
TemperatureBased
is now called
temperature
. You can still use the old names in
PreonPy.
- Removed the obsolete
Mesh
particle sampling method for
solids.
- Changed the font to Liberation Sans for all platforms.
- In the property editor, when changing a number the arrows for
increasing/decreasing the value are removed.
Plot dialog:
- Selecting multiple statistics simultaneously using mousedrag, SHIFT
or CTRL, is now possible. Consequently, the checkboxes for
multi-selection are removed.
- The statistic plot is now also updated when the “Delete Simulation
data before/after current time” action is performed.
- Plot max value elevated to approx 10^12 which influences the
keyframe editor too.
- Units are now included in CSV file export in the header line.
- The
smoothing width
parameter is not upper-bounded
anymore. Large smoothing width may decrease the plot dialog performance,
though.
Message window:
- Improved the look of the
Messages
tab in the tab bar
when new messages are available.
- Changed the color of warnings and errors.
- The text in the message boxes is now selectable and, thus,
copyable.
Keyframe Editor
- Spline interpolation is not applied to imported keyframe sequences
anymore by deafault. Instead, linear interpolation is applied.
- Removed the icons for locked and keyed properties to save space.
Keyed properties are now printed in bold.
- The values of the keyframes can now be edited directly inside the
table. This also allows to set the value of a single changed cell to all
selected cells by holding CTRL while confirming the change.
- When switching between objects, the same property stays selected in
the keyframe editor as long as it exists for the newly selected
object.
- The curve type can now be changed in the key table.
- Improved the performance when importing keyframes from a CSV
file.
- The add buttons is now only enabled when correct values are
inserted. Furthermore, if the x-axis is not mapped against time, the
placeholder text in the x-axis field shows the expected unit.
- Improved the overall layout of the keyframe editor.
- The property list is sorted alphabetically now.
Optimized
- Improved the performance on Windows by up to 15%: The Snow Solver
performance is particularly affected and performance improved by up to
50%.
- Slightly improved the performance for multiphase simulations or
simulations with local refinement.
- Slightly improved the performance of the implicit thermo solver when
using MPI.
- Improved the performance of the implicit viscosity solver when using
MPI by up to 15%.
- Improved the performance of the snow solver when using MPI by up to
15%.
- Improved the performance when using local refinement and MPI by up
to 25%.
- Improved the height sensor performance in scenes with large
geometries.
- Improved the performance in scenes with many sensor planes.
- Keyframe editor: Improved the performance when importing keyframes
from a CSV file.
- Selecting many objects in the scene inspector is now faster.
Fixed
Snow Solver:
- The Snow Solver
warm start
option now converges to a
more similar result and can lead to lower iteration counts.
Sources:
- Fixed an issue that the Area source didn’t emit any particles when
using a flat jet area with a very small fan angle.
GUI:
- Graphics window: Fixed that the clipping plane could not be scaled
with the asymmetrical dragger.
- Keyframe Editor: Fixed that the same frame was loaded multiple times
when having “Update time on click” enabled and moving the clicked mouse
in the graph.
- Plot Dialog: Title (and names of stats when multiple objects are
shown) are updated when an object is renamed.
- Plot Dialog: Unit is updated for the current value.
- Property editor: Fixed that for a new scene, the properties
show sim statistics
, show timings
, and
track memory
were shown as deviating from the default.
- Property editor: The unit of
revolution
is now
correctly displayed to be dimensionless.
- Property editor: The
revolution start
property now
allows the full range of real numbers as input.
- Timeline: The green marker in the timeline is now instantly
created/moved as soon as the corresponding keyframe is created/moved in
the keyframe editor.
- Timeline: Fixed issue that the marker sometimes did not update
correctly while simulating when using different view and simulation
frame rates.
Miscellaneous:
- Airflow import: Fixed an issue that transient geometry would be
interpreted to be static if the optional timeset number was missing in
the model description of the Ensight Gold case file.
- Fixed an issue where the file extension “.CSV” (upper case) would
not be recognized as a valid import or export file for CSV on
Windows.
- The
adhesion
property is now also reset if applying the
default physics preset to a solver.
- Fixed that providing a start time that is larger than the end time
to PreonNode did not result in an error.
- When PreonCLI is started to process a scene, no intermediate
untitled scene is created. This helps to prevent some error messages if
no home directory is available.
- Added a clipping input slot to the distance sensor thus allowing it
to be clipped.
- Fixed possible exception when using an inactive solver that is
connected to an active solver via the refinement connection.
- Fixed possible crash when loading a fluid “.prstate” file from a
network drive with unstable connection.
- Fixed a Volume source issue that when using the
Badpoint
connection, the “bad path” was not fully drawn to
the seedpoint.
- PreonMesher does not print an error message anymore when being
active during a simulation without fluid particles.
- Fixed a rare crash that could occur when simulating after deleting a
heat flux sensor.
Removed
- Removed the partio particle export library. This removes the
possibility to export particles into formats like “.bgeo”. EnSight Gold
and CSV exports are not affected. If you need to export into the formats
that have been removed, you can use the partio Python interface together
with the PreonPy buffer access.
- Removed support for RHEL 6.x.
Deprecation notices:
- PreonLab 4.3 will be the last version that supports Python
3.5, since the Python project announced the EOL of this version
to be in September 2020. We still support 3.6, 3.7 and 3.8. Note that
most likely you don’t have to change your code, since those minor
versions are largely backwards compatible. You though have to update
your Python installation if you used Python 3.5.
[4.2.4] - 2020-08-07
Fixed
- Fixed a memory issue that could occur when using a seedpoint-filling
object (Volume source, Area source, Volume sensor or Box domain). In
rare cases, this issue could lead to crashes and/or excessive memory
consumption.
- Fixed an issue that the
no gap
property was not
synchronized between different solvers in multiphase setups.
- Fixed an issue that the
Thermodynamics::implicit
property was not synchronized between different solvers in multiphase
setups.
[4.2.3] - 2020-07-17
Fixed
- Fixed an issue in the airflow import from Ensight Gold geometry
files. The format employs 1-based indexing, but was considered to be
0-based in the importer.
- Fixed a crash when using local refinement and MPI.
- Improved the error logging when PreonNode terminates due to not
enough memory.
[4.2.2] - 2020-06-26
Fixed
- Fixed an issue that the
Badpoint
connection offered by
the volume source did not work.
- Removed
Badpoint
and Align
connecition
input slots for the volume sensor and the box domain (these are only
available in the volume source).
- Fixed a bug that could lead to wrong simulation results and to rare
crashes when inserting new objects while single-stepping through a
simulation.
- Fixed an issue that setting an open boundary plane to
inactive
had no effect.
- Improved the stability of the snow solver when snow is in contact
with boundary.
Optimized
- Improved the performance of the airflow import via the Ensight Gold
format.
[4.2.1] - 2020-06-08
Fixed
- Fixed rare crash that could occur when using the force sensor in
combination with dynamic sampling.
- Fixed an issue in PreonPy and PreonCLI that the open boundary plane
was placed wrongly when its default transformation had been changed.
PreonLab was not affected by this.
- Added more load balancing statistics to the Mpi domain useful for
performance analysis.
- Fixed an issue in the experimental Impulse Boundary Handling where
particles collided too early and were left out by the Snow Solver.
[4.2.0] - 2020-05-28
Added
Domains
- The box domain now supports seedpoint-defined volumes
similar to the Volume sensor and the Volume source.
PreonPy:
- Added parameter
force_overwrite
to the
save
function of the preonpy.Scene
class.
- For rigids,
compute system
and its complement
reset pivot
have been added to the API.
Rendering:
- Added option
render single particles
to the
Surface material that switches between particle and surface rendering
for fluids.
- Added option
light sources factor
to the Surface
material that weights the contributions of light sources in the scene to
the material.
- Added option
headlight factor
to the Surface material
that can be used to illuminate the material from the camera’s point of
view.
- Added presets for the Surface material for fast and high-quality
fluid particle rendering.
GUI:
- Objects in the Scene Inspector can be filtered by entering
substrings of object names into a search box.
- Added right-click actions that allow to quickly show/hide a)
selected objects b) (selected) objects of a specific type or c) all
objects of a scene.
- In the keyframe editor, it is now possible to extend or scroll the
property table in case of long property names. Scrolling is only enabled
in the presence of long property names.
- Statistic values in the OSD are now shown in a tabular
representation.
- Physical units in the OSD are now formatted using the same
representation as in the property editor.
- In the property editor, the range for coloring cannot be changed
anymore when
automatic range
is on. Previously, they could
be changed, but were immediately overwritten by the auto-computed
values.
- In the property editor, the “copy PreonPy name” action is not
displayed anymore for elements of composites such as the single
dimensions of the
position
property.
- Added a link to the PreonLab Manual in the Help menu.
- Properties that vary amongst particles, like the rest density are
not hidden from the property editor anymore when
temp. based density
is enabled. They are shown now, and in
place of the property value, a link to the keyframe editor is
offered.
- Video export dialog: Added a button to copy the current FFmpeg
command to the clipboard.
- Added the possibility to display tooltips while hovering over
dropdown menus in the property editor. This is for example used for the
Preon solver properties
viscosity model
and the
experimental solver type
.
- The “Reset Pivot” command now properly supports undo.
Preon solver:
- The implicit viscosity solver and the thermo solver now
support local refinement.
- Added experimental
error relaxation
property which
stabilizes multiphase simulations to allow simulations with high density
ratios.
- Added experimental
solver type
property which allows to
select the DI/PS variant. This variant allows to compute an additional
position shift step for the fluid particles that does not influence
velocities after the default density invariant solver step.
Air flow:
- The Air flow force field now has a new property
velocity storage implementation
that offers a new gridless
mode (this mode is also the default for new scenes). The
gridless mode consumes less memory and offers more accuracy than the
grid-based approach, but requires more computational power during the
simulation.
Snow:
- The solver will now fall back to an alternative solution if the
implicit solution did not converge. It fixes instances of heavy particle
deletion and explosions.
- Added experimental Coefficient-of-Restitution-based boundary
handling.
Height sensor:
- Added mesh-based height sensor to measure fluid thickness on
top of a solid. The sensor supports multiple solvers.
Rigid body solver:
- The automatically computed inertia tensor is now displayed in the
property editor and can be queried in PreonPy. Note that the value is
only correct after the simulation has been started.
- When using the RBPS, it is now possible to manually specify an
inertia tensor for dynamic objects.
Sources:
- Added new fill method
quality
that minimizes
the amount of artificial void spaces in the generated sampling due to
particle discretization. This also gives much more consistent
results across different fluid resolutions.
- You can now connect one or multiple seedpoints to an Area
source.
- Added a right-click action “Add seedpoint” for the Volume source and
the Area source.
Car suspension model:
- Added parameter
reference point
that allows to relate
zero spring deflection to an uncompressed spring, or the spring
configuration under axle load.
- Added parameter
mapped unit
that allows to specify the
unit of the quantities the deflection is mapped against if non-linear
spring modelling is enabled.
PreonNode / PreonCLI
- Added
--postprocess
option. This allows to
postprocess a given scene instead of simulating it, e.g., for
rendering. Note that this always postprocesses all active
sensors/renderers, i.e., previous sensor data from the simulation may be
overwritten.
Miscellaneous:
- Added experimental
Open boundary
domains.
- Added experimental
Open boundary
plane.
- Transient airflow import via the EnSight Gold format: Added support
for static geometry files.
- The PreonCLI and PreonNode help text now contains additional
information about environment variables and a link to the manual.
- Airflow import via the EnSight Gold format: The element types
‘nsided’ and ‘nfaced’ are now supported.
- For objects that support thermodynamics, system types that are not
valid for the specific object type are not selectable anymore from the
GUI.
Changed
PreonNode
- Running PreonNode with two instances on one machine now also
produces an error (unless the
--noPerformanceChecks
option
is given). Before, this error was only shown with three or more
instances.
Preon solver:
- The simplification algorithm for local refinement will now
only merge particles with similar velocities, which improves overall
simulation quality.
- The simplification algorithm is now also executed
independently of refinement. However, it is only executed if
there are enough simulation steps since the last simplification to
ensure good performance.
- Tweaked default refinement buffer zone settings in the
collider settings to allow for more precise refinement and
simplification.
- Local refinement now preserves the density and pressure
field of unaffected regions in the fluid more accurately.
- Replaced the power-law viscosity model by the more general
Herschel-Bulkley model. If the
yield stress
and
stress growth exponent
properties are set to zero, this
equals the previous power-law model.
- The user-defined
timestep
property, which is used if
Time Stepping->adaptive
is off, is no longer overwritten
by PreonLab if Time Stepping->adaptive
is on.
- The property
temperature
has been removed from the
solver. If you want to set a temperature for all currently existing
particles of a solver, use the new right-click action
Set temperature
.
- The
timestep
property is now keyframeable. Furthermore,
the visibility of maximal timestep
property is now
correctly updated in the keyframe editor.
- Improved viscosity behavior in simulations containing multiple
fluids with different densities.
- Local refinement may not be employed in multiphase simulations.
Snow:
- Changed the default
shear friction factor
from
10
to 1
.
- Changed the default
stuck threshold
from
1.25
to 0.9
.
Sources:
- Moved Volume source properties related to volume generation to
property group
Volume settings
consistent with the Volume
sensor and the Box domain.
Sensors:
- Newly inserted sensors now connect to all fluids by
default.
- Improved numerical accuracy of summed sensor plane statistics (like
average velocity).
- It is now possible to choose a cell size for the air flow visualizer
manually. The cell size is still automatically synchronized with the
airflow cell size if the airflow uses a grid-based velocity
storage.
GUI:
- Connection editor: The filter types become scrollable if the size of
the connection editor dialog would otherwise be too large to be fully
displayed.
- Connection editor: “Center on selected objects” now also zooms
in.
- In the property editor, the “Set to default value” command is now
also applicable to groups, resetting all of the properties in all of the
subgroups to the default value.
- In the property editor, the “Set to default value” command is now
only visible if the current property value differs from the default
value.
- In the property editor, it is now possible to enter numbers with up
to 17 digits. Previously, this was limited to 7 digits.
- In the property editor, the
,
character is now also
accepted as decimal separator.
- Presets are now listed in alphabetical order in the context menus on
all platforms.
- The user preferences, collider settings and rigid body settings now
use the same look&feel as the property editor. This brings multiple
advantages: Grouping of properties, undo/redo and improved input of
values all behave similarly. Furthermore, the respective dialogs can now
stay open while being able to continue to work in PreonLab.
- Connection editor: It is not possible anymore to zoom the connection
editor such that all objects disappear.
- Fixed an issue that on several places in the GUI, for real numbers
whose decimal part matched the integer part, only the integer part was
shown and the decimal part was omitted.
- All number input fields in all dialogs now accept and display the
same number of decimals. Previously, some inputs field, including the
ones in the keyframe editor, only allowed to input and to show a limited
number of decimals.
- In the keyframe editor, using the “Fit to curve” button now fits the
whole curve and not only the keyframes.
- Fixed an issue that long camera names got cropped in the rendering
dialog.
- The smallest unit shown for time statistics is now always rounded
down. This fixes an issue that for example “1m:60s” was shown.
- If a solid´s triangle mesh is connected to multiple sensors, the
mesh coloring is decided among active and visible sensors in the
following order: Force sensor, heat flux sensor, height sensor, wetting
sensor.
Rendering:
- Inactive cameras connected to a renderer are no longer rendered
during simulation or postprocessing.
- Tweaked the
snow_fast
material preset so that it
matches the snow_quality
preset a bit closer.
Car suspension model:
- Removed the property
compute initial deflection
.
- Inverted the sign of the statistics
Front_SpringForce
,
Rear_SpringForce
, Front_DamperForce
and
Rear_DamperForce
.
Miscellaneous:
- Increased the default value of
segments
of the sphere
object to 52 and moved the property to the General
group.
- Removed the
timestep
property of the scene.
- Improved the error handling when reading or writing statistics from
/ to disk failed.
- Copy&paste of objects: Default connections are created between
existing objects in the scene and the pasted objects. Note that this
process might create connections for the copy that you have previously
removed from the source.
- When using the animation import, it can now be selected if the
imported keyframes should use linear or spline interpolation.
Optimized
Preon Solver:
- Significantly reduced the computational cost of local
refinement for cases in which only parts of the fluid are
affected.
MPI:
- Slightly optimized MPI performance in scenes with few
particles.
Sensors:
- Improved Sensor plane performance for some scenes.
- Improved Force sensor performance when using the
no-gap
boundary handling option.
Miscellaneous:
- Reduced memory consumption by solid particles when not
simulating rigid body dynamics.
- Significantly improved performance in scenes with very large
geometries (compared to the fluid) and dynamic sampling
enabled.
- Improved performance in scenes with many
objects.
- Reduced the memory consumption of the Volume source by a
factor of up to 2.
- Slightly improved snow solver performance by using better scheduling
for snow particles in contact with boundary.
- Improved the numerical precision of various calculations, including
object transformations.
GUI:
- Improved the efficiency of the connection editor for object
groups in scenes with many objects.
- Improved GUI performance when right-clicking on a group in the scene
inspector and choosing
Select all children
.
- Fixed a bug that choosing “Show Curve” in the property editor would
not switch the chosen property in the keyframe editor if the keyframe
editor was already open.
Fixed
Preon solver:
- Fixed an issue that friction forces and temperature diffusion were
sometimes inaccurate when using the
distance correction
/distance correction thermo
options.
- Fixed an issue in the temperature-based density computation. This is
only relevant when using thermodynamics and temperature-based
density.
- Fixed a rare issue with
stable initialiation
resulting
in wrong particle velocities if integration time step is clamped.
- Fixed a determinism issue when using local refinement and
simplification.
- Fixed an issue that setting the behavior of a refinement domain to
inactive
did not prevent the particle refinement to take
place.
- Corrected a prefactor in the power law viscosity model (which is now
part of the more general Herschel-Bulkley model), which led to deviating
simulation results in some cases.
- Fixed an issue in the
PotentialForce
cohesion model
that resulted in same accelerations for different rest densities.
- The
Rendered particles
statistic is now only shown if
particle downsampling is active.
Snow:
- Fixed the snow behavior for area sources: Snow emitted by an area
source was almost immediately plastic.
Rigid body particle solver:
- Fixed a possible crash when keyframing the rigid type of a rigid
body from
dynamic
to scripted
.
Rendering:
- It is not possible anymore to enter invalid values (like “-1” for
specular to diffuse ratio
) for material properties using
the property editor.
- Fixed an issue that rigids with enabled mesh coloring connected to a
material with enabled
override color
were lighted
differently in the graphics window than when rendered using the Preon
renderer.
GUI:
- Fixed an issue that “Jump to last simulated frame” jumped to the
wrong frame while being in playback mode and simulation and view frame
rate differed.
- Fixed an issue that checkboxes were shown instead of radio
buttons.
- Fixed an issue were selection of an edge in the connection editor
was not possible.
- Fixed the issue that long tooltips for properties without units
being displayed without line breaks.
- Fixed the issue that tooltips were not shown for right-click actions
in sub menus.
- Fixed an issue in the connection editor that lead to objects being
drawn upside down zooming out too much at once.
- Whitespaces are now removed when inputting time, e.g., ” 3 s ” is
now correctly interpreted as 3 seconds.
- Fixed the issue that very large time values and very small time
values (<1ms) were not correctly displayed.
- Fixed the issue that the property editor sometimes did not show the
correct property values when selecting multiple objects.
MPI:
- Fixed a warning when compiling preonmpiadapter.
- Fixed a synchronization issue when using local refinement.
- Fixed an issue when using the
quality
cohesion mode
that could lead to inaccurate simulation results.
- Fixed exception being thrown when using multiple force sensors with
enabled substep updates connected to dynamic rigid bodies simulated
using the RBPS.
- The
CFL time step
solver statistic is now reduced
correctly across all worker nodes.
- The
num simulated particles
statistic of the Preon
Solver is now summed up across all worker nodes.
PreonPy:
- Fixed the color property return type.
- Fixed that the post_process command aborted too early if view and
simulation frame rate differ.
- Fixed that the post_process command did not correctly generate data
for pathlines.
Miscellaneous:
- Fixed a rare crash when scaling a solid with dynamic sampling
enabled.
- Fixed that changes to the user preference “save scenes before
simulation or post-processing” were not stored.
- The setting “save scenes before simulation or post-processing” now
yields a scene save if any rigid samplings have changed, too.
- Fixed an issue that the cache marker in the timeline of an Alembic
Mesh did not immediately update when the animation time factor was
changed.
- Fixed an issue that the cache marker was placed incorrectly when the
animation time factor was anything other than 1.
- Fixed a rare issue that solid particles could go out of sync with
the solid geometry with dynamic sampling activated.
Removed:
- Removed support of PreonPy for Python 2.7.
- Removed “Preon Solver (3.3 settings)” for the creation of a solver
object. Old scenes will still load as expected.
Deprecation notices:
- 4.2 will be the last version that supports RHEL
6.x. Note that if you use other Linux based operating systems
that are not officially supported, this may also affect you. If you are
uncertain, please contact our support. We can provide a special version
that can be used to test OS compatibility already before the next
release.
- The rigid body simulation library Bullet will be removed in the next
version after 4.2. Instead, the rigid body solver particle (RBPS) can be
used.
- The partio particle export library will be removed in the next
version after 4.2. This will remove the possibility to export particles
into formats like .bgeo. EnSight Gold and CSV exports are not affected.
If you need to export into the formats that will be removed, you can use
the partio Python interface together with the PreonPy buffer
access.
[4.1.6] - 2020-04-29
- Fixed mesh-based volume sensor issues when using dynamic
transformations and / or local refinement.
- Fixed issue that the mesh-based volume sensor didn’t use
multithreading.
- Fixed the problem that changing the path to a geometry file in the
property editor was not effective in certain cases.
- Fixed issue that leakage could occur in simulations with a spacing
lesser or equal than 0.001 and when using one of the primitive shapes
(sphere, cylinder etc.) with “sample trianlge mesh” disabled and
“dynamic sampling” enabled.
[4.1.5] - 2020-04-03
- Fixed possible crash when using local refinement, MPI and
domain-guided particle scripting at the same time.
- Fixed rare issue that the computed timestep could be zero.
- Fixed crash that could occur when deleting and reinserting a sensor
mesh.
[4.1.4] - 2020-03-04
Fixed
- Fixed issue that could occur when using dynamic sampling and
particle-based mesh coloring (used by the force sensor, the sensor mesh
and the wetting sensor).
- Fixed possible crash when using local refinement and MPI.
[4.1.3] - 2020-02-19
Fixed
- Fixed issue that performance could decrease over time in scenes with
a high number of simulation substeps.
[4.1.2] - 2020-02-14
Fixed
- Fixed issue that the “Create refined solver” right-click action was
only visible in experimental mode.
- Fixed an issue that a simulation or playback start time >10s
would not be loaded from the .prscene file.
[4.1.1] - 2020-01-23
Fixed
- Fixed an issue that the refinement output slot of domains was only
visible in experimental mode.
[4.1.0] - 2020-01-17
Added
Sensors:
- Added support for multiphase simulations and local fluid refinement
to the sensor plane and the sensor mesh.
- Added support for local fluid refinement to the force sensor and the
wetting sensor.
- Added support for substep updates in MPI mode to the sensor plane
and the sensor mesh.
- Added support for substep updates in MPI mode to the force sensor.
However, per-particle max pressures are still only tracked at full
frames.
- The heat flux sensor now supports MPI (however no substep updates
yet).
- The sensor plane and sensor mesh now also measure the normal
velocity.
- The sensor plane now has optional arrows to indicate its orientation
and flow rate mode. The arrow color for positive/negative flow rate is
customizable.
preonpy:
- Added buffer export functionality for force sensor, sensor mesh,
sensor plane, wetting sensor and heat flux sensor buffers.
- Added support for Python 3.6, 3.7 and 3.8.
- Added the possibility to force a statistics reload. This can be used
to obtain them when they were changed by another instance or in scenes
opened with the
load_only_object_creations
flag to get
statistics.
MPI:
- In case of a fatal MPI synchronization issue, PreonLab will now
write accurate debug information to the log files automatically. In many
cases, this eliminates the need to rerun everything with the
–debugLogging option.
GUI:
- In the property editor, it is now possible to reset a property to
its default value via the context menu.
- In the property editor, the background of keyframed properties is
now colored depending on the state of the property.
- In the property editor, the physical unit is directly displayed
after the value for physical properties.
- In the property editor, groups containing modified properties are
now also accentuated in bold.
- Harmonized the look & feel of PreonLab across different
platforms.
- Added a right-click action for transform groups which rotates their
coordinate systems such that one of their axes is aligned with two
points provided by the user.
Rendering
- Added property “fade factor” to the surface material that is
multiplied to the overall opacity of the object and allows to easily
realize fade-in and fade-out effects via keyframing.
Miscellaneous:
- The single particle tracker now plots the determinant of matrix
values of particles.
Changed
Preon solver:
- Slightly reduced the number of deleted particles in some scenes when
using the “no gap” boundary handling option.
- Local refinement is no longer marked as experimental.
Snow:
- Improved the performance and stability of the snow solver. For this,
the default values of newly inserted solvers have been adapted. If you
have stability issues, please enable experimental mode in PreonLab and
check the settings in the
Numerics
property group.
- Removed some experimental properties of the snow solver
(
script source particles
,
delete high value particles
,
snow accel. time step factor
, Explicit
and
PredictedExplicit
modes for experimental
solve type
property).
- Reduced the amount of data that is written to disk each frame. This
change also means that it is not possible to use the force sensor in a
post-process step for simulations done with 4.0.
- Added an experimental
warm start
option for the snow
solver which can increase performance.
- Single snow particles look less like a sphere due to reduced
specular highlights and less diffuse lighting based on light
direction.
- Tweaked the snow subsurface scattering approximation to minimize
flickering.
Sensors:
- The Volume sensor now supports user-defined volumes similar to the
Volume source (for instance using seedpoint filling). This feature
replaces the experimental volume sensor-source coupling introduced in
4.0. Please note that there is no automatic scene upgrade for old
experimental volume sensors created with PreonLab 4.0.
- Removed the “smooth no-gap pressure” option for the force sensor. If
no-gap is used, the force sensor now automatically uses an improved
smoothing method.
- The heat flux sensor employs an improved smoothing method in
applications where the no-gap option is enabled in the Preon
solver.
preonpy:
- The type
preonpy.BufferSet
got renamed to
preonpy.BufferSetRef
.
- The area source property
precipitation height ("mm/min")
got renamed to
precipitation height
.
- When opening scenes with the
load_only_object_creations
flag, the scene statistics are not loaded by default. Please use the new
reload_statistics
method.
Miscellaneous:
- The “color” property of a fluid solver object is now only displayed
if the coloring mode is set to “None”. The “Coloring” group is only
displayed if the coloring mode is not set to “None”.
- When using an adaptive timestep for fluids, the “timestep” property
is not shown anymore, as it cannot be changed by the user. Only the “max
timestep” property is visible in that case.
- Removed the “particle limit” for Solids in case the dynamic sampling
is used.
- Extended the set of valid characters for object names from the set
of alphanumeric characters to all printable ASCII characters (excluding
those which are reserved by the file system).
- Changed the name of the “deterministic” commandline argument to
“particleBasedLoadBalancing” in order to be more descriptive.
- The video export now produces variable bit rate videos. This results
in smaller file sizes while retaining quality. Instead of asking for the
constant bit rate, the video export dialog now allows to choose a
quality mode from given presets.
- Keyframes are now exported to CSV in the Keyframe Editor using the
property name as displayed in the Property Editor.
- When using dynamic boundary sampling, the “Delete data” timeline
action and the python method “reset_simulationdata” now also clear any
dynamically generated rigid particles.
- Air pressure object: It is now possible to keyframe the air pressure
depending on the distance from the center of the air pressure
object.
- Exposed the adhesion property in the Preon solver which defines the
adhesion between different fluid phases.
- Manually inserting an MPI domain (which is only useful for
debugging) is now an experimental feature and is not exposed by
default.
- Renamed the snow solver property
intial Young Modulus
to Young Modulus
.
GUI:
- Improved the support for HiDPI monitors.
- On/off properties in the property editor are now displayed using a
switch-like visual representation.
- When editing the name of an object with the property editor, the
name only gets updated when editing finishes. This simplifies editing of
names, as there are no invalid intermediate states when changing the
name anymore.
- Read-only properties are now grayed out in the property editor to
better distinguish them from editable properties. Furthermore, they are
not shown anymore when having selected multiple objects.
Optimized
- Improved the performance in scenes with few fluid particles when
using “dynamic sampling” on a large rigid.
- Improved the Preon solver performance when using the “Quality”
cohesion mode by up to 20%.
- Improved the post-processing performance for scenes with multiple
heat flux sensors.
- Optimized the disk consumption for mapped static temperature point
clouds on solid objects. In this case, the temperature buffer now is
only stored once and not per simulation frame.
Fixed
Sensors:
- The force sensor now measures adhesion forces correctly when using
the “PotentialForce” model and the “Quality” performance mode.
- Fixed an issue that the “max pressure” statistic of the force sensor
was not displayed correctly in the plot dialog in some cases.
preonpy:
- Fixed an issue that calling ‘write_statistics_to_csv’ with
‘fixed_time_interval’ set to ‘True’ would always employ the default view
framerate.
GUI:
- In the property editor, it is not possible anymore to insert values
that are outside of the range of the property.
- Fixed an issue in the keyframe editor that a sequence of keys using
spline-interpolation was not displayed accurately when the distance
between the keys was very low.
- The “preonpy documentation” button in the console now links to the
documentation of the current version. Previously, it pointed to the
documentation of an older version.
MPI:
- Fixed a possible crash when using MPI and local refinement.
Rendering:
- Fixed a minor issue in the surface material that indirect diffuse
lighting was ignored when a skylight factor of 0 was used.
- Reduced a flickering issue in the snow rendering that could occur
given certain lighting configurations.
- Fixed some visual artifacts in the Preon Renderer that could occur
in large-scale scenes.
- Fixed an issue in the renderer that
use scene background
was keyframeable after toggling
transparent background
twice.
- Fixed a shader crash when copy-pasting the
DefaultMaterialFlat
and a light source into the scene.
Miscellaneous:
- Fixed an issue in the computation of the local heat transfer
coefficient in multiphase simulations.
- Fixed an issue that keyframes were not correctly saved or copied
when inserting an invalid value (e.g.,
-1
for
behavior
).
- Fixed an issue that the right-click action “Export particles” for
the Preon solver did not find any particle data after simulating.
- Fixed an issue that no undo event was created if the user switches
the transformation mode while dragging the transform modifier
(e.g. translating along the x-axis).
- Fixed an issue in the per-particle pressure initialization for the
Density Invariant Solver in the PreonSolver after a manual frame jump in
the timeline.
- Fixed a rare crash when importing an Alembic mesh.
- Fixed an issue where an inactive airflow visualizer would try to
display old sensor data.
- Clipping objects don’t clip light sources anymore.
- Removed keyable color properties that should not have been
keyable.
- Fixed an issue in the computation of the surface area of the heat
flux sensor.
- Fixed an issue where all entries of a group got partially checked as
soon as the group itself was set to partially checked when opening the
“Save As” dialog.
- Fixed an issue that the lookup table for non-linear spring or damper
coefficients would not be employed due to the table having allegedly too
many entries.
- Fixed an issue in the Car Suspension Model that occurred when
switching from non-linear spring/damper coefficients back to linear
constants and the deflection/velocity-based coefficient mapping would be
interpreted as a time-based mapping.
- Fixed an issue that the solver statistic ‘Ave-Density’ could show a
higher value than the solver statistic ‘Max-Density’.
Deprecation notices:
- Version 4.1 will be the last version that supports Python 2.7.
[4.0.3] - 2019-11-20
Fixed
- Reverted version of the progressbar2 package to the one shipped with
4.0.1.
- Fix preonpy, so that it can be used with newer versions of the
progressbar2 package.
- Fixed keyframe CSV-import issue that prevented composite properties
(e.g., “position x”, “position y”, …) from being imported.
- Fixed some parts of the preonpy API documentation.
[4.0.2] - 2019-10-30
Fixed
- Fixed an issue in the CSM import of non-linear damping
coefficients.
- Fixed a crash of PreonNode and PreonCLI when the
--lList
option was used and no license file was available
at all.
- Fixed a problem where a cached information about which frames were
simulated was out of sync. This resulted in warnings about missing
simulation data in the PreonLab GUI.
- Fixed an issue in the automatic computation of inertia tensors.
- Fixed cohesion issue when using the local refinement and MPI.
[4.0.1] - 2019-10-08
Fixed
- Fixed possible performance issue in the graphical user interface
when loading a scene with many objects.
- Fixed an issue that an area source connected to an outflow domain
did not emit enough fluid in some cases.
- Fixed performance issue when the RBPS was selected as rigid solver
(which is the case by default for new scenes). This fix also affects
scenes without any actual RBPS calculations.
- Added property “cell limit” to the AirFlow that sets the maximum
number of cells (in millions) for the top grid level to prevent
allocation of too much RAM.
- Fixed an issue where a progressbar could potentially stay visible
during simulation.
- Fixed stability issue for area sources emitting into refined
regions.
- Fixed an issue in the CSV import of keyframes.
[4.0.0] - 2019-09-23
Added
Preon solver:
- Added implicit solver for thermodynamics.
- Added new “FluidRefinement” input and output slot for the Preon
Solver. A refinement output solver has coarser particles that will be
subdivided and transferred to the corresponding input solver when they
enter a connected refinement domain.
- Added new “RefinementDomain” slot that allows to connect Boundary
domains to Preon Solvers for the purpose of refining coarse particles.
Fine particles outside the domain may be simplified into coarse
particles.
- Added new “PotentialForce” cohesion model, which is calibrated to
use the physical parameter of surface tension.
Snow:
- The snow solver now supports multiphase simulations (i.e., multiple
snow solvers can be used in a single scene).
- Added and exposed more properties for the snow solver. Also changed
default settings for newly inserted snow solver to be more robust and
allow larger time steps.
Sensors:
- Added a heat flux sensor which can be connected to a solid object.
In addition to the heat flux, the heat transfer coefficient is
evaluated, too.
- Added a ‘SensorPlaneTemperature’ input slot to the heat flux sensor
that allows to derive the heat transfer coefficient from the surface
temperature of a solid and the fluid temperature measured by a sensor
plane.
- You can now connect a Volume source to a Volume sensor via the new
VolumetricObject slot. In this case, the Volume sensor will only measure
fluid in the volume defined by the Volume source (for example using
seedpoints).
- Added the possibility to switch the shape of the Volume sensor
between ‘Box’ and ‘Cylinder’.
preonpy
- Added direct access to particle data without memory copy involved,
i.e., direct access to the data structures of PreonCore.
- preonpy now supports all presets.
- Added
crop_left
and crop_right
methods to
the scene object.
- Added the methods
get_resource_files
and
is_portable
to the scene object for automating
cluster-related tasks easier and more robust.
- The
PropertyNotFound
exception now contains a more
helpful message if the property got renamed.
MPI:
- The rigid body particle solver now supports MPI.
- The snow solver now supports MPI.
GUI:
- Introduced a new “Save As” dialog which allows by-category
selection.
- Property values which differ from the default value are now printed
in bold in the property editor.
- The tooltip for all PreonSolver properties now shows the physical
unit of the property, as well as its range.
- Added a right-click action to copy the property name for preonpy
access. This name may differ from the name shown in PreonLab in order to
avoid name collisions. If the name differs, this will also be shown in
the tooltip for this property.
- Added right-click action “Jump to last simulated frame” to the
timeline.
- Added a user preference to automatically save the scene when
starting to simulate or post-process.
- Keyframed properties are now colored yellow in the property
editor.
Rendering:
- Added optional subsurface scattering approximation to the surface
material (works currently only for fluids).
- Added optional procedural noise generator to the surface material
(works currently only for fluids).
- Added snow material presets for the surface material that make use
of subsurface scattering and noise generation.
- Added an option to ignore transparency of the background for
secondary rays.
- Added parameter “enable diffuse reflections” to the Surface material
that allows to simulate indirect diffuse lighting.
- Added parameter “skylight factor” to the surface material that
weights the hemisphere color during indirect lighting calculations.
- Added material preset “sensor” that can be applied to meshes
connected to a sensor for a reduced influence of light direction.
- Added property “sdf method” to Preon Renderer that allows to switch
between different signed distance field computation methods. This
feature is still in experimental stage.
Miscellaneous:
- Added a novel “Air Pressure” force field that applies a force in
normal direction at the free surface of a fluid.
- Dynamic sampling is now supported for all integrated Solid types
except for the Porous Rigid.
- The cuboid, box, capsule, sphere and cylinder now offer a property
“sample triangle mesh”. If this is enabled (which is the default), the
mesh will guide particle sampling and not the mathematical shape. Mesh
sampling is faster for most cases.
- Added property “track memory” for all objects that enables or
disables its memory consumption statistic. The property is disabled by
default except for the scene and the collider.
- Added
use cohesion as adhesion
and
solid adhesion
properties to the Preon and snow solver
which can be used together with the new “Potential force” cohesion model
if the adhesion specified in the solid should not be a factor of the
solver cohesion.
- Added the possibility for piecewise linear spring and damper
coefficients in the car suspension model.
Changed
Preon solver:
- Changed the default values for the Preon solver, particularly
setting the new cohesion model “Potential force” by default. For getting
the previous default values, the newly introduced “3.3 settings” preset
must be used.
Snow:
- Improved file compression of snow .prstate files. Please note that
snow .prstate files created with 4.0.0 can not be loaded with older
version.
- Changed the default settings of the snow solver.
- Removed the solver type selection property of the snow solver.
BiCGStab solver is now always used.
Solids:
- Dynamic boundary sampling is now the default for new scenes.
- The RBPS is now the default rigid body solver in new scenes.
- Improved precision of solid particle velocities in cases where
keyframing is used.
Sensors:
- The force sensor prints and records only net forces. The local
values measured and recorded are pressure and shear stress. For these
local minima and maxima are computed as well as the average on the total
area defined by the force sensor (connected solid mesh). The net
pressure statistic is removed.
- Fixed computation of pressure and shear stress for two-dimensional
scenes.
- Added property “smooth no-gap pressure”, that enables or disables
the smoothing of measured pressure values when using the no-gap boundary
handling option.
- The
track max pressure
property in the Force sensor is
no longer experimental.
- Statistics for saturated wetting are displayed in OSD and plot
dialog only if “track wetting time” is enabled for the Wetting
sensor.
preonpy:
- Some properties, especially those where we had name collisions
before, now have a different unique name for preonpy access.
Miscellaneous:
- Keyframes can now be imported via CSV in the Keyframe Editor using
the property name as displayed in the Property Editor.
- Experimental connection slots are now hidden in the connection
dialog, if the “experimental features” setting is not set.
- The default position and scale of Area source has changed.
- The default particle spacing of the Preon solver has changed from
5cm to 2cm.
- The default scale of the solid object “Box” has changed from (3, 1,
3)m to (1, 1, 1)m.
- If transient airflow files can not be handled in file copy
operations and in preonpy’s
Scene.get_resource_files
due to
a known issue, a warning is printed.
show time
is now enabled by default for Preon
Renderer.
- The action “Delete simulation data before/after current time” now
removes all types of result files. In previous versions some
post-processing files were not deleted. The action also got renamed to
“Delete data before/after current time”.
- The action “Delete simulation data” got renamed to “Delete
data”.
- Both actions “Delete data before/after current time” and “Delete
data”, now don’t delete files not written by PreonLab.
- Changed the name of camera preset “default” to
“perspective_default”.
- Upgraded PreonLab’s central structure-of-arrays binary file format,
fixing a possible integer overflow issue for very large data sets. This
means that .prstate, .prsampling, .pathlines and .prf files created with
PreonLab 4.0 can’t be loaded in previous versions. PreonLab 4.0 is still
fully backwards-compatible.
- Some internal variables will not be stored in the .prscene file
anymore.
- Changed the default installation directory from
C:\Program Files (x86)
to
C:\Program Files
- The right-click action “Regenerate and show preview” for the Volume
Source is now called “Regenerate and show volume”.
Fixed
Snow:
- Fixed force sensor and two-way coupling in combination with
semi-implicit snow solver. There is still a known limitation that if the
system is not solved perfectly, that the force sensor results may differ
from the forces applied by the snow solver. This can be improved by
enforcing a more perfect solve of the system by setting the stopping
criterion to
MaxResidual
.
MPI:
- Fixed issue when using dynamic sampling in a MPI simulation on one
of the integrated solid shapes offered by PreonLab (like Plane and
Box).
Miscellaneous:
- Increased the floating point precision to 1.0E-7 for the time column
in the CSV export.
- Fixed an issue when applying the wading script to a scene with
specific transform hierarchies that surround the car suspension
model.
- Fixed typo in iterative solver property:
stopping criterion
->
stopping criterion
.
- Fixed printing of HTML characters in the message dialog.
- Fixed minor determinism issue when rendering snow.
- Fixed that some debug DLLs were distributed with the installer on
Windows. This reduces the installer and installed size of PreonLab
slightly.
- Fixed rare crash that could occur when simulating or post-processing
with a distance sensor.
- Fixed issue that PreonCLI did not consider the number of threads
specified in the scene file when rendering.
- Fixed some corner cases where copy & pasting multiple objects
previously did not result in the correct connections being
maintained.
- The RBPS no longer records statistics if there are no dynamic rigid
bodies in the scene.
- Fixed “Clean Data” right click action for Solid objects.
- Fixed an issue that pathlines only showed a part of the lines when
restrict lifetime
was enabled before disabling
playback
.
- Fixed issue that the cache marker in the timeline of an Alembic Mesh
did not immediately update when the animation offset was changed.
- Fixed an issue that an airflow visualizer connected to a transient
airflow was not always updated in time.
- Fixed an issue in the interpolation of transient airflow data.
- When importing or exporting files, the path of the last file chosen
in the corresponding dialog window is now correctly stored again, so
that it does not need to be entered each time the dialog is opened.
- Removed the property ‘apply scaling on pivot’ from objects that do
not expose the pivot or scaling at all.
- When exporting an Alembic file, the
.abc
file ending is
now automatically added when it is not specified manually.
- With air flows, it is now possible to specify whether the sample
points shown should be normalized or not. Furthermore, it is possible to
specify a scale for their visualization.
- When loading a scene with a “Mesh resource” object and the mesh file
is not available, it is now possible to set a new path and have the
connections restored.
- Fixed an issue where the force sensor would only consider fluid
particles of the first connected fluid object.
- Fixed an issue that occurred if multiple mesh resources shared the
same file name and the scene should be saved as a portable scene.
- Fixed an issue where the validator of the Ensight format description
file (‘.case’) would return success although an exception has been
raised during the validation.
- Particle previews of a volume source are now deleted if the solver
spacing is changed.
- Fixed an issue that would delete the resource file of a “Statistic”
resource object along with simulated and post-processed data when the
user performs a “Delete data” action.
- Fixed possible crash during scene loading when using the force
sensor in a scene with no-gap enabled.
- Fixed crash that occurred when deleting a solid while picking a
particle of this solid.
- For dynamic solids, there is now an additional property allowing to
manually specify the objects volume instead of using the automatically
calculated one. This fixes the issue that a changed volume was
overwritten when loading a scene.
- Fixed issue that memory consumptions reported for Solids was wrong
when using the RBPS.
- Fixed issue that in very rare cases, a mesh was not sampled
correctly with boundary particles.
- Fixed an issue that sensor planes and force sensors did not clear
the displayed values immediately when executing
Delete simulation data
in the timeline and ‘update sensors
at substeps’ is disabled.
- Improved numerical precision of the RBPS solver.
- Fixed an issue that the OSD of an airflow object does not get hidden
as soon as “show sample points” is disabled.
Optimized
- Optimized Preon Solver performance by up to 20% for scenes with deep
water / fluid.
- Reduced loading times of large STL files.
- Improved MPI performance in scene with sparse fluid or few
particles.
- Saving an untitled scene on the same partition or file system does
not involve making many copy operations anymore, but simply renames the
cache directory. Before, this was only done when saving into the
“PreonScenes” directory.
- Fixed issue that the RBPS could consume more memory than necessary
in some cases.
- Significantly reduced memory consumption required by the dynamic
sampling system. This can be relevant in scenes with very detailed
meshes or in scenes with a very high amount of solid objects.
Removed
- Removed the compress option from the “Save As” dialog, since
compression is usually already applied when simulating and double
compression may cause problems.
- The deprecated access to the current loaded scene via
preonpy.scene
is removed. Use
preonpy.current_scene
instead.
- It is not possible anymore to create an Area source with a
predefined
area type
property by calling
scene.create_object
with "Square source"
,
"Circle source"
, "Flat jet source"
or
"Rain source"
. Use
scene.create_object("Area source")
instead and set the
area type
property manually.
- Passing simulation start and end as frame numbers to
PreonCLI/PreonNode without specifying the
--frames
is not
possible anymore. Consider using the time format,
e.g. 0ms 100ms
, or add the --frames
argument.
[3.3.4] - 2019-08-12
Fixed
- Fixed an issue that the force sensor always computed zero friction
in non-MPI mode when post-processing a scene that had been closed and
reopened after simulating.
- Fixed issue when using dynamic sampling in an MPI simulation on one
of the integrated solid shapes offered by PreonLab (like Plane and
Box).
- The rain source now uses the same pseudo-random generator algorithm
across all platforms.
[3.3.3] - 2019-06-26
Fixed
- Fixed an issue when applying the wading script to scenes with
specific transform hierarchies that surround the car suspension
model.
[3.3.2] - 2019-06-21
Fixed
- Fixed MPI synchronization issue / crash related to
thermodynamics.
- Fixed issue that the tangential velocity reported by the sensor
plane and sensor mesh was incorrect in some cases.
- Fixed possible crash that could occur in some circumstances after
removing a force sensor that was connected to a solid.
- Fixed a bug in the viscosity computation that led to wrong results
in the bulk viscosity when changing the spacing of a fluid after loading
the scene.
[3.3.1] - 2019-06-05
Fixed
Solver:
- Fixed an issue where setting an isothermal temperature in the fluid
solver is not reflected in the temperature-based particle coloring.
PreonCLI:
- Fixed a potential abort related to supported characters in the
terminal environment.
Miscellaneous:
- Fixed an issue in the legacy loading of scenes created with a car
suspension model and a PreonLab version smaller than 3.3.0.
- Fixed issue that a volume source with hexagonal filling could
generate particles below its valid volume.
- Fixed force sensor crash when changing the fluid spacing while using
dynamic sampling and no gap boundary handling.
- Fixed a bug for heat-flux-based coloring of solids in cases where
the property
ignore dry areas
is set to
on
.
- Fixed a bug which prevented the serialization of heat flux and heat
transfer coefficient for solid objects.
- Fixed a crash in MPI simulations for scene setups that have the,
currently unsupported, heat transfer coefficient computation
enabled.
Optimized
- Improved the performance in scenes with thermally interacting solids
and fluids in which heat transfer computation is disabled.
[3.3.0] - 2019-04-23
Added
Solver:
- Added power-law viscosity model.
- Added an option to get resolution-independent friction forces at the
fluid-solid interface. Resolution-independency is guaranteed for a
roughness of 1.
- Added an option to get resolution-independent thermal diffusion at
the fluid-solid interface. Resolution-independency is guaranteed if the
fluid conductivity equals the conductivity of the solid.
- Added an option to compute the arithmetically averaged conductivity
at the interface of the fluid as an alternative to the product averaging
proposed by Monaghan.
- Added Preon solver (Preview settings) to the add menu which will
insert a Preon solver with preconfigured settings that will become the
new defaults in PreonLab 4.0.
Solids:
- Added
dynamic sampling
property to most solids. If
activated, the solids will only generate boundary particles where they
are required. By default, this is set to off
for PreonLab
3.3, but will be the default in an upcoming version.
- Added option
ignore in rigid body simulation
to solids.
Solids with this property will be considered by the fluid, but not by
the rigid body dynamics simulation.
- For solid objects, added the property
ignore dry areas
.
When this property is enabled only the wet areas are taken into account
when computing min, max and average statistics for heat flux and heat
transfer coefficient of this solid.
- Solids now also plot their euler angles as statistics.
preonpy:
- It is now possible to get the name, the type and the category of an
object.
- Added limited preset support in preonpy. Currently only the solver
presets
default_physics_settings
and
preview_physics_settings
are available.
- When executing scripts via PreonCLI or the PreonLab Console, the
__file__
variable is now set to the file path executed
Python script.
Licenses:
- It is now possible to select node-locked licenses in the license
information dialog.
- It is now possible to specify if only node-locked licenses, only
floating licenses or both types should be checked out in
PreonCLI/PreonNode via cli arguments and in preonpy via
preonpy.checkout_license
.
- Added the
--licenseList
option to PreonCLI and
PreonNode, to print all available licenses.
- It is now possible to checkout simulation thread licenses by
pressing enter after specifying the number of threads in the license
information dialog.
- If the last used license could not be checked out, a message box is
displayed.
Miscellaneous:
- Car suspension model: The center of mass of a car can now be
specified via the weight distribution and the center-of-mass height
above the wheelbase.
- There is now an
experimental features
toggle in the
user preferences. E.g., the snow solver and gradient correction of the
PreonSolver are only shown if this is enabled.
- When performing “save as”, it is now possible to also deselect
objects with less than 1MB of data.
- When opening the connection editor for the first time after scene
load or scene creation, all objects are centered.
- Added memory consumption statistic for each object of the
scene.
- Added memory consumption dialog accessible using
Help->Memory Consumption
. Removed right-click action
Memory consumption
of scene instead.
- Static and transient airflows can now be imported via the Ensight
Gold format.
- Added new property
Statistics Recording->store statistics per substep
which
allows to define if the statistics of an object are gathered at every
simulation step or only at full frames. By default, this is set to
on
except for rigids and sources. The behavior of sensors
may be overwritten by the scene property
General->update sensors at substeps
.
Changed
Solver:
- Pressure mirroring is now always enabled and cannot be disabled
anymore.
- The
Morris
and Monaghan
viscosity models
are now combined into a single “Newtonian” viscosity model that has
distinct properties for shear and bulk coefficients. Shear viscosity is
computed with the Morris model, while bulk viscosity is computed with
the Monaghan model.
- For the Preon solver (Preview Settings), the bulk viscosity is per
default set to 3 mPa*s, which is three times the dynamic shear
viscosity. This is the proposed value for water according to the
literature, e.g., “Experimental measurement of bulk viscosity of water
based on stimulated Brillouin scattering” by He et al., published 2012
in Optics Communications, Elsevier.
- Removed the
PreonViscosity
model. It is replaced by the
Newtonian
viscosity model. Old scenes using the
“PreonViscosity” model are automatically adjusted so that the fluid
behavior is the same for the given fluid spacing.
- Introduced
legacy viscosity values
property. It is
automatically enabled when loading scenes which were set up with
previous versions to enforces PreonLab to compute comparable results. It
is also enabled when adding the standard Preon solver via the add menu.
For the Preon solver (Preview Settings), this property is disabled.
Sensors:
- Added surface area statistics to the wetting sensor that state the
wet area in square meters.
- The percentage wetting statistics now show the wettage in relation
to the total mesh area which only works if the mesh area does not
contain duplicated triangles. The new surface area statistics should be
preferred if possible.
- Renamed
Max wetting time
statistic into
Saturated wettage
.
- The file format for wetting sensors has changed and old wetmaps
can’t be loaded in PreonLab 3.3. To get accumulated wetting and wetting
times back, you need to post-process the scene once again.
- Experimental: Added property
track max pressure
to the
force sensor. For each solid particle, this will store the maximum
pressure over time. The gathered data can be used for coloring and it
can be exported via CSV.
Sources:
- When using the
hexagonal
fill mode of the volume
source, the gravity direction does not influence the particle alignment
anymore. If necesssary, the alignment can now be influenced by rotating
the source.
Miscellaneous:
- Porous rigid: On creation, its properties are not modified according
to the up axis anymore. Furthermore, roughness and adhesion of the
porous rigid are set to zero by default.
- Printing a more informative error message in case the simulation was
aborted due to an impractically small timestep.
- The object selection dialog during a save as operation is now always
displayed and the available entries are deselected by default.
- Rigid particle samplings are now written to disk the moment they are
generated and not when the scene is saved. It is still necessary to save
the scene after the simulation to ensure that scene file and cached
particle files are consistent.
preonpy.get_license
now also returns the license model
of the used main license.
- The meshes of a Preon mesher are no longer kept in memory and
displayed whenever the current frame is changed and the behavior is
inactive.
- File dialogs filter according to all valid files types at once.
- When exporting a video, it is now possible to include frame 0 in it.
This had been disabled previously, as old versions of avconv could not
handle it. When experiencing issues, you should upgrade to the newest
version of ffmpeg.
- Airflow: The velocities shown when enabling
show sample points
of an air flow are no longer the
velocities from the imported file but are instead interpolated from the
constructed velocity grid.
- Removed the possibility to start PreonLab right from within the
installer or maintenance tool on Windows. This ran PreonLab in
Administrator mode which resulted in problems with Drag & Drop.
- Car Suspension Model: The user can now provide spring constants and
damping coefficients for an improved suspension characteristic and
damper characteristic, respectively. The allowed deflection is split up
into maximum possible compression and maximum possible expansion
relative to the static deflection.
- The rigid body solver now stores and loads its gathered statistics.
Its respective plot dialog can be accessed via the rigid body settings
dialog.
Optimized
- Improved performance and reduced memory consumption for the rigid
body particle solver.
- Reduced memory consumption when using two-way coupling.
- The collider does not generate any .prstate files anymore during the
simulation.
- Optimized CPU utilization in scenes with many moving solids.
Fixed
Miscellaneous:
- Porous rigid: Fixed a bug where a scaling along the channel axis
that is not in line with the spacing could cause a major change in the
actual porosity of a porous rigid.
- When loading a scene containing keyframes for legacy properties,
i.e., for properties whose name or range has changed in newer versions
of PreonLab, the keyframes are now converted accordingly.
- Preon Mesher now also names the file according to the model frame if
the mesh is created via the GUI interaction (“Save mesh”, “Mesh
sequence”).
- Fixed issue that the RBPS did not work correctly when a scene
without a Preon Solver was loaded and a Preon Solver was inserted
subsequently.
- If you deselect an object before a save as operation, the statistics
are also not copied.
- Fixed exception being thrown when a single particle tracker is
connected to a rigid particle.
- It is not possible anymore to save the scene while simulating. This
could have lead to undefined behavior.
- Fixed issue that enabling “override color” in a texture material
ignored the texture.
- Fixed issue in the plot dialog where, for small values, the position
marker would not be projected onto the nearest sequence curve
correctly.
- Added additional safety checks to detect invalid (not-a-number)
timesteps. In these cases, the simulation will be aborted.
- Fixed issue that the summed volume of a sensor plane or sensor mesh
with keyframed behavior was sometimes incorrect when simulating or
post-processing multiple times.
- Added unit to global velocity shown when rotating a drag force. Also
added unit to drag force property tooltips.
- Added missing icons in some dialogs on some Linux desktop
environments (e.g. KDE).
- Fixed a bug in the Plots dialog with smoothing enabled, where the
smoothing width was set to smaller-than-needed number when the user
entered a number that was larger than the maximum allowed width.
- Fixed an issue that sensor planes and force sensors did not clear
the displayed values immediately when executing
Delete simulation data
in the timeline.
- Fixed a potential crash that could occur when deleting an object
that is contained in a group in the connection editor.
- Fixed a rare crash that could occur when too many update requests
are sent to the progress dialog in a very short time.
- Fixed an issue that in rare occasions applying a material preset did
not change all of the properties the preset contains.
- The path to resources outside of the scene directory, that are
referenced with a relative path, is now kept intact when saving a scene
to another location.
- Fixed issue that the frame loader did sometimes not recover from a
previous frame loading error.
- Fixed an issue in the velocity computation for guided solids.
- The action ‘Export state as CSV’ for Solid objects now includes the
global positioning of the sample points.
- Fixed functionality of scene property
update sensors at substeps
.
- Simulation and post-processing performance is no longer affected by
invisible air flows which have the
show sample points
property enabled.
- Fixed font issue when rendering a color legend on a transparent
background with Preon Renderer.
- Fixed the issue that the current value of the temperature property
of solid objects has not been considered for the simulation when jumping
to a different frame after setting the temperature.
Alembic:
- Fixed that Alembic debug libraries are shipped on Linux.
- Fixed that an Alembic mesh with
load transformation samples
set to off
displayed velocities for rigid particles anyway when
VelocityBased
coloring was activated.
- Fixed issue that an Alembic rigid which has both
load transformation samples
and
load mesh samples
set to off
showing an
infinite yellow cache marker range in the timeline.
- Fixed issue that an Alembic rigid that has an
animation time factor
other than 1
has wrong
particles velocities.
- Fixed issue that scene background image and OpenGL recording
resolution was not saved to the .prscene file.
preonpy:
- It is now possible to save a scene in place while using the
subsample or compression feature.
- Fixed an issue in preonpy where the function ‘get_connected_objects’
would return an empty list in case the slot label differs from the slot
name.
MPI:
- The outflow domain can now be used in MPI simulations.
- Domains now report correct statistics (deleted and scripted
particles) in MPI mode.
- Fixed crash / timeout issue when using an active force or wetting
sensor connected to an inactive solid.
[3.2.3] - 2019-03-06
Fixed
- Fixed issue that fast moving area sources failed to emit fluid
continuously in rare cases.
- Fixed an issue for airflow imports with more than 179 million sample
points.
- Fixed an issue for smoothed statistics in the plot dialog.
- Fixed an issue that could lead to negative pressures in
postprocessing in rare cases.
[3.2.2] - 2019-01-09
Fixed
- Fixed issue that using an invisible sensor mesh could lead to
undefined behavior.
- Fixed an issue in the airflow import process with respect to
position scaling and velocity scaling.
PreonPy:
- When using spline interpolation, it is now possible to directly set
the keyframe gotten from an object or property to another object or
property. Previously, the interpolation type of the last keyframe in the
sequence had to be modified manually.
[3.2.1] - 2018-12-11
Changed
- Removed “Export Frame” functionality which was not intended to be
exposed.
- Expanded PreonNode MPI debug logging functionality.
Fixed
- Fixed an issue with the Monaghan viscosity model that led to a crash
in very rare occasions.
- Fixed an issue where temperatures mapped onto a solid would
occasionally not be loaded correctly on re-opening a saved and closed
scene.
- Fixed very rare crash that could occur when trying to load a scene
while simulating.
[3.2.0] - 2018-11-20
Added
Solver:
- Added an implicit solver for the viscosity force, which largely
improves the performance when simulating higly viscous fluids.
- Added new Monaghan viscosity model, which is particularly suitable
for highly viscous fluids.
- When the viscosity varies spatially due to multiple phases or due to
temperate-based viscosity, the viscosity forces are now computed in a
symmetric way. This improves momentum preservation in these
scenarios.
Sources:
- It is now possible to emit rain from a Flat jet source or Area
source using the new, more powerful Area source (see Changed section for
more details).
- Added cone emit area type to the new Area source.
Thermodynamics:
- Added possibility to colorize a rigid based on the heat transfer to
other participating media (i.e. air, other rigids, fluids).
Miscellaneous:
- Added new spline-based interpolation method for keyframing. This is
the new default for new keyframe sequences and allows you to define
smooth sequences with less keyframes than before.
- The video export dialog now automatically guesses the FFmpeg file if
the location containing the binary is included in the PATH environment
variable.
- When trying to import an unsupported file with drag & drop, an
error message is shown.
- Added ability to colorize pahtlines via particle temperature.
- Added hotkey (Ctrl + G) to take a screenshot of the currently active
OpenGL viewport.
- Added cylinder shape to outflow domain.
- A single outflow domain can now be connected to multiple
sources.
- Added preonpy interface for ensight export.
- Improved help text for PreonCLI and PreonNode.
- PreonNode and PreonCLI now accept start and end arguments in time
format.
- PreonNode now writes if an message is only a warning or an
simulation-aborting error.
- Improved performance of CSV export of pathlines and added a progress
bar with the possibility to cancel the export.
PreonPy:
- Added Python bindings to get and set keyframes with ‘Spline’ as
interpolation type.
- Added Python bindings for the export of rigid particle transient
data, e.g., heat flux and heat transfer coefficient, to the CSV format
as well as the ensight format.
- Added Python bindings for the export of fluid particle transient
data, e.g., velocity and pressure, to the CSV format.
Optimized
- Solids are now only sampled with particles when it is required
(typically by the simulation). This greatly reduces memory consumption
and improves performance when opening scenes for post-processing.
- Greatly reduced memory consumption of Preon Solver during
post-processing.
- Added “rendered particles target” to the user preferences. This sets
the target number of rendered particles (in million) per fluid solver
object. If necessary, particles will be downsampled to a coarser
resolution to match the target. This greatly improves performance and
stability when post-processing scenes with very high particle counts
using the graphical user interface.
- Optimized loading of compressed .prstate files, which can speed up
post-processing by up to 30%.
- Improved impact of GL rendering performance in some scenes with few
particles.
- Improved frame loading performance for Alembic rigids if
load mesh samples
is off.
- Slightly improved Preon Renderer performance for scenes with
triangles that vary in size.
- The air flow visualizer does not update itself unnecessarily anymore
during simulation or post-processing.
Changed
Sources:
- Merged Area source, Square source, Circle source, Flat jet source
and Rain source into one. This combined source is called Area source and
supports all features offered by the old sources.
- The new Area source does not store or load per-frame .prsim files
anymore.
- Source statistics are now only updated and serialized per frame to
save memory.
OSD:
- The width of the dropdown list for selecting a camera is now
adaptively adjusted depending on the camera names, preventing cropping
of names.
- Fixed an issue that letters with parts below the baseline were
cropped.
- Added property “show color legend” that enables to always show or
hide the color legend, or to display it when data is availabe. This is
beneficial when exporting to a video, where it may be distracting when
the legend appears and disappears from frame to frame.
- The color legend is now hidden if the corresponding object is set to
“invisible”.
- The unit of a color legend is now only shown once in the title and
not for each value that is displayed.
- When using a marker in the color legend of a sensor plane, it does
not overlap the color legend title anymore.
Rigid body:
- Bullet specific properties are no longer shown in the property
editor if Particle-based rigid body solver is used.
- Exposed Bullet specific properties: rolling friction and collision
margin.
- An exception is now thrown if it is tried to simulate rigid body
dynamics with the particle-based rigid body solver without having at
least one fluid in the scene.
Rendering:
- The “override color” material property now also overrides object
opacities with the alpha component of the specified material color.
- The specular term of the Surface material is not influenced anymore
by the opacity (in Preon Renderer).
- Replaced the “glass transparency” property of the Surface material
with the new “glass reflection” property. This change allows to realize
less transparent and / or colored glass.
- Added property “exclude from reflections” to all objects (in the
“Appearance” group). If this is enabled, the object will not be mirrored
in reflective surfaces. This is mostly intended for sensors.
Preon solver:
- Artificial viscosity is not enabled per default and no longer
recommended.
- Thermodynamics: The properties ‘heat capacity’ and ‘thermal
conductivity’ are keyframable now in all thermal objects (fluid solver,
solids, air objects).
- Thermodynamics: The property ‘temperature’ of a solid will now be
hidden as soon as a temperature field is connected via the
‘TemperatureSamples’ slot.
- Evaporation: The surface detection as well as the surface area
estimation has been improved leading to a more robust evaporation
process and reduced calibration time (w.r.t. prefactor).
- Improved handling of fluid evaporation between free-surface particle
layers.
- In the property editor, properties related to viscosity, cohesion
and adhesion are now grouped to give the editor a clearer
representation.
Miscellaneous:
- At least one of the properties have to be selected in the respective
export dialog before being able to “Export sample data to CSV”.
- Removed option to disable tracking and recording of statistics for
all sensors since the purpose of sensors is to measure and store
statistic values.
- In PreonNode the
--testThreads
command now takes
precedence over the simulation.
- If you pass start and end frame to PreonNode and PreonCLI you will
now get a deprecation warning. Consider passing
--frames
or
using times.
- The OSD of point cloud resources now consistently displays all
velocities in m/s. Previously, the length unit depended on the data of
the point cloud.
- The OSD of point cloud resources is now also shown when simulating a
scene that was loaded from disk. Previously, the OSD had not been shown
in this case.
- Evaporation solvers (for fluids) and rigids with wetting films now
report the simulation time from where no more evporation is possible.
Either there is no mass left to evaporate, or no free surface could be
detected.
- When using velocity or acceleration as position or orientation
control mode, the resulting position / orientation profile is now
integrated analytically which improves accuracy and memory usage. The
“integration timestep” property is removed because it is not needed
anymore.
- Ctrl+K now creates a transformation keyframe with spline
interpolation unless spline interpolation was explicitly disabled for
the sequence. Removed Ctrl+L shortcut that previously created a
transformation keyframe with linear interpolation.
- The post-processing dialog for per-sample data sensor export and
rendering now shows whether the respective cache directories contain
files from previous exports in the form of a time interval. If the time
interval overlaps with the interval of the new export/rendering, data
will be overwritten. If the export/rendering is canceled, files already
written are not deleted anymore.
- Removed cancel button for scene loading operations.
- Replaced the “Purchase desktop license” button with sales contact
information.
- When passing deprecated object types
Square source
,
Circle source
, Flat jet source
or
Rain source
to the preonpy create_object
method, the corresponding area type
and
emit type
are set and a deprecation warning is printed.
Starting with version 4.0 this will not be possible anymore.
Alembic
- Alembic files with HDF5 backend can no longer be loaded or saved
with PreonLab. Instead, the Ogawa backend is now used. This means that
if you want to open Alembic files with the HDF5 backend in PreonLab you
first need to convert them to use the new Ogawa backend. This can be
done with the command-line tool we provide on the download page.
- Removed non-hotloading Alembic import. Importing an Alembic file now
always creates an Alembic rigid.
- Alembic rigids can be used in MPI simulations when
load mesh samples
is off. Otherwise an aborting error is
thrown.
- Alembic rigid now set the
load mesh samples
property
automatically depending on if multiple mesh samples are found in the
Alembic file.
- PreonLab now not only checks if normals are existing in an imported
Alembic mesh but also if they are non-zero. Else, they are recomputed by
PreonLab.
Fixed
Solver:
- Changing the dimension is now automatically synchronized when there
are multiple solvers in the scene.
Sources:
- Fixed emission issue for copy and pasted continuous sources (like
Circle sources).
Rigid body:
- Fixed that adhesion forces did not contribute correctly to two-way
coupling.
- Fixed being able to change the rigid body solver during simulation,
which led to a crash previously.
MPI:
- Fixed a statistic / frame saving issue when using a view frame rate
that differs from the simulation frame rate.
Miscellaneous:
- Fixed a problem in the plot dialog that would display NaN as the
average of statistic.
- Trash folders are never copied anymore when saving a scene to a
different location.
- Fixed that on Linux the text in the License server dialog was
cropped.
- The spacing of rigid objects can now be smaller than 1e-6.
- Fixed an issue where the evaporation solver would switch to a
‘framewise’ equilibration phase although a full frame has not yet been
reached.
- Prevented a crash for some setups that required too much memory.
PreonLab will now show an error instead.
- Fixed issue that particle picking did not work on Solids when using
a material with override color enabled.
- Fixed issue that when loading a scene, connection editor did not
show the whole space in some cases.
- Better error message when having no licenses installed and no
license server configured.
- There are now tooltips for context menus of the scene
inspector.
- Better tooltips and error messages for Preon mesher.
- Fixed issue that the “use scene background” property of Preon
Renderer was not correctly loaded from disk.
- Fixed crash when deleting a fluid or solid while using particle
picking on it.
[3.1.2] - 2018-09-27
Added
- Added command line option “debugLogging” to PreonNode that can help
to investigate MPI related technical issues.
Changed
- PreonNode and PreonCLI now abort the simulation in case a mesh file
can not be loaded or a particle sampling can not be generated.
- Improved error logging in some cases in which std::bad_alloc was
thrown due to insufficient memory.
Fixed
- Fixed a bug that the maximum value of simulation thread licenses was
not correct in some cases.
- Fixed a bug that could prevent multiple simulation thread licenses
from being checked out.
- Added more informative error messages in case the license check
fails for PreonNode, PreonCli or preonpy.
- Fixed ensight export with a start frame larger than 9.
- Fixed a crash that could occur when enabling RigidNeighborhoodBased
coloring.
- Fixed MPI synchronization issue that could occur with some MPI
implementations in scenes with a very high number of fluid or solid
particles.
- Fixed issue that the “Total Solid Particles” and “Active Solid
Particles” statistics were incorrect for scenes with more than 2 billion
solid particles. Please note that each individual Solid is still limited
to 2 billion particles.
- Fixed formatting of log error and warning messages.
[3.1.1] - 2018-09-11
Fixed:
- Fixed a bug that prevented licenses from being checked out, if
multiple licenses for the same product are available.
- Fixed issue that in some cases, there was no error message when the
particle limit specified by sources or solids was exceeded.
- Fixed different behavior of flat jet source when connected or not
connected to Transform parent.
- Fixed issue for flat jet source for very slow emission speeds.
- Fixed issue that the rigid boundary sampling was not correctly
synchronized in mpi simulations in some cases. This could lead to
undefined behavior when using the Preon Solver option “mirror pressure
off”.
- Added more informative error messages in case the license check
fails for PreonNode, PreonCli and preonpy.
- Fixed mpi synchronization issue that could occur at very high
particle counts.
[3.1.0] - 2018-08-06
Added
Solver:
- Added Morris viscosity model, which is also the new default
model.
- Added option “stable initialization” which discards velocity changes
due to pressure for particles in their first simulation step. This
option is enabled by default for new solvers, but disabled when loading
old scene files.
- Added option to clamp particle pressure values or delete particles
above a pressure value that can not be represented accurately by
PreonLab. This prevents a timestep of zero in rare cases.
- Added right-click action to export fluid particles of a solver as a
.csv file.
- Ouflow domain: Added new control conditions velocity and
continuative. For velocity, min and max target speeds can be defined
which are applied to outflow particles if their speed is not in the
given interval. The continuative condition keeps the velocity of
particles unchanged. For velocity and continuative condition, particles
are deleted if their velocity deviates significantly from the outflow
direction.
Rigid body:
- Added experimental particle-based rigid body solver. You can switch
between Bullet and the new rigid body solver using the
Settings->Rigid body settings menu.
Renderering:
- The Surface material (previously Phong material) now supports
reflections which allows to render surfaces like metal
realistically.
- Added option to Surface material to render thin, two-dimensional
glass.
- Added a path-tracing mode to Preon Renderer that supports soft
shadows and rough reflections. Enable the “monte carlo light transport”
property in a Surface material to use path tracing for this
material.
- An artificial hemisphere is now used by default for rendering water
or solid reflections. You can disable this for Preon Renderer using the
new property “artificial secondary hemisphere”.
- The properties “override color” and “color” are now also available
for the Volumetric material (previously Water material).
- Added various material presets for the Surface and the Volumetric
material. The presets can be applied via right-click actions.
- You can now right-click on one or multiple selected solids or fluids
and connect an existing or a new material to them.
- Added possibility to use a transparent background in Preon
Renderer.
- Preon Renderer now applies a dithering pattern to the background to
avoid color banding. You can weight the dithering amount using the new
“background dithering” property.
MPI:
- MPI now supports thermodynamics for fluid-fluid interactions and for
fluid-solid interactions where the solid acts as a specified boundary
condition.
- Added network benchmark to PreonNode that is performed at startup
and reports the transfer speed from node 0 to all other nodes.
Miscellaneous:
- Multiple statistics files can now be imported at once via Import
Statistics.
- Added import dialog “Import Velocity Field” to intialize a Point
cloud resource from a CSV file.
- Added presets for solver particle coloring, scene background and
camera configurations. The presets are applied via right-click
actions.
- Added right-click action to export pathline data as a .csv
file.
- Added a tooltip for the right-click action “save cell status in
image” of sensor plane.
Changed
Solver:
- Particle data that was loaded from disk and is not explicitly marked
for serialization is now not serialized anymore when writing .prstate
frame files.
- Changed the default viscosity model from PreonViscosity to Morris.
Removed the Laminar_Morris model.
Sources:
- It is now possible to specify the initial velocities of particles
emitted by a volume source using the new “VelocityField” input slot. As
velocity field output, you can either use a moving / rotating rigid or a
Point cloud resource with velocity CSV samples.
- Removed the spacing property for all sources.
Rendering:
- Renamed “Phong material” to “Surface material”.
- Renamed “Water material” to “Volumetric material”.
- The Volumetric material can now be applied to Solids to render
volumetric glass.
- You can now specify the index of refraction in the Volumetric
material.
- Adapted Surface material parameters, please see the manual or
tooltips for further information.
- A light source that casts shadows now overrides “two sided lighting”
for all materials.
- Removed the possibility to connect a hemisphere material to Preon
Renderer.
- Removed obsolete attenuation properties from the Point light.
- The Rendering dialog does not clear the existing image when
rendering anymore, but instead paints the new over the old one.
- The background colors are now properties of the Scene and not the
Scene UI Settings. By default, Preon Renderer will now use this
background. To specify a separate background in Preon Renderer, you need
to disable the new “use scene background” property.
- Removed the material input slot for the mesh resource. Materials are
now always specified per solid object.
- The specular lighting term in the surface and volumetric material is
now energy-conserving. This eliminates the need to tweak the specular
lighting factor in many cases. For the volumetric material, the specular
lighting factor is reset if you load an old scene.
Evaporation:
- If thermodynamic simulation has been performed before enabling the
evaporation process, the per-particle temperatures of the fluid can be
employed as input for the evaporation process.
- The windspeed prefactor of the evaporation coefficient is now a
property of the evaporation solver.
- You can now specify the thickness of the fluid layer at the air
interface that can be evaporated within the current simulation step
w.r.t. particle mass. If greater than 1, more than one layer of
particles could be evaporated at once (default is 1).
Thermodynamics:
- The diffusion model has been adapted. It is now
resolution-independent for fluid-fluid, fluid-rigid, and fluid-air
interaction. The diffusion model for solid objects is still
experimental.
- The temperature checkbox is now disabled when exporting sensor plane
/ sensor mesh data as csv and no thermodynamics have been computed.
preonpy:
- Installation of the
preonpy
.whl file now also
automatically installs its dependencies.
- You can now provide different input and output slot names to the
connect_objects
method.
- Added
get_connection_slots
method that returns a list
of connection slots together with connected nodes.
Miscellaneous:
- The timeline now has a crop before and crop after right-click
actions that are more consistent with the delete all action and no
longer change the scene.
- The freeze movement properties for dynamic objects is now
keyframeable.
- You can now specify a animation time factor for Alembic objects to
playback an animation faster or slower.
- Updated RLM library: Optimized license checkout procedure.
- Updated the tooltips of all objects in the add menu to be more
descriptive.
- Changed the name of the dialog “Import Point Cloud” to “Import
Temperatures” in order to differentiate it from the new “Import Velocity
Field” dialog.
- Right-clicking in the graphics window now shows a context menu if
there is a selected object.
- Improved the error logging when saving and a filesystem related
error occurs.
- The scene inspector now also shows the invisibility icon for objects
with an opacity of 0.
- The input field for time in the plot dialog are using the time
format now.
- The time value printed in keyframe editor for the current mouse
position is now using the time format.
- CSV export of multiple keyframes from temperature to value is now
supported.
- Mesh import: File name is now printed if no mesh is found in the
imported file.
- PreonCLI and PreonNode now consider the OMP_NUM_THREADS environment
variable.
- When exporting statistics as CSV, the time column now has the name
“time” (previously “Time”).
MPI:
- Renamed the “noMachineCheck” startup option to
“noPerformanceChecks”.
Optimized
- Improved performance in long simulations that produce new frames
quicky, typically raining simulations.
- Fixed issue that photon mapping impacted the rendering performance
in scenes without any fluid particles.
Fixed
MPI:
- Fixed rare issue that solid particle samplings could not be
synchronized during scene loading.
- Fixed issue that resuming an existing simulation did sometimes not
work correctly.
- Fixed a rare crash, that sometimes could occur when using high node
counts.
Rendering:
- Fixed issue that transparent surfaces did not cast correct shadows
in Preon Renderer.
- Fixed rendering artifacts for objects that are not located near the
position (0,0,0).
- Fixed issue that color legend text was sometimes not rendered
correctly by Preon Renderer.
- Fixed Preon Renderer issue when a transparent and non-transparent
surface was located at the same position.
Miscellaneous:
- Fixed the loading and saving of empty rigid samplings from HDD.
- Fixed that newly pasted objects (via
CTRL+V
) were not
directly marked as selected in the connection editor.
- The bounding box of a point cloud resource becomes invisible after
changes to its input parameters or its transformation.
- Fixed an issue that start and end time markers in the timeline were
set wrongly when undoing frame rate keyframes.
- Updated RLM library: License server broadcasting now works on linux
too.
- Fixed issue that the “Recompute normal vectors” right-click action
did not work if the Solid was connected to a mesh resource.
- Fixed issue that Solids were not correctly resampled when switching
the action of a connected boundary domain from “deleteFluidParticles” to
“deleteAll” or “deleteRigidParticles”.
- Fixed that force sensor did not colorize the connected rigid if the
pressure, adhesion and friction force display properties were off and
the pressure display property was on.
- Fixed a problem that could cause data loss when saving an untitled
scene in combination with a filesystem related error.
- Fixed very rare issue that Mesh_Independent sampling generated
incomplete particle samplings for some geometries.
- Fixed being able to generate particles for a mesh via right-click
during simulation which would then stop the running simulation. Now, a
warning is shown that the simulation first needs to be paused.
- Fixed problems when saving a scene with dots in its name.
- Importing keyframes now immediately updates the graphics window and
creates an undo event.
- Fixed issue that undo and redo did not work correctly when
overwriting keyframes using the key pasting functionality.
- Mesh import: Files with dots in the filename no longer result in
objects in PreonLab with dots in the name which are invalid names.
- Fixed that air flow objects created by the import airflow dialog
were not directly selected after creation.
- Fixed that the message count for info messages was not increased
correctly.
- Crop-before and crop-after actions now consider simulation data of
rigids and sensors.
- Increased numerical precision when keyframing eulerAngles or when
using the orientation control modes revolution or revolutions per
second, which can improve solver accuracy in long simulations.
- Fixed issue in copy&paste of objects where connection partners
would not be found.
- Fixed issue in copy&paste of objects where transform connections
would not keep the relative positioning to connections partners.
- Fixed issue where the option ‘keep every x-th frame’ on saving the
scene did not take effect for specific objects (e.g. wetting
sensor).
- Fixed issue that sensor mesh was sometimes not colored correctly
when nothing was measured.
- Fixed issue that Point Cloud Resources did not use their color for
rendering the sample box.
- Fixed issue that the sensor plane and sensor mesh did not export the
positions of samples without measured data correctly.
- Fixed issue that sometimes undo/redo did not work correctly when
modifying existing keyframes using the keyframe editor.
- Fixed issue that the timeline cache marker did not work for velocity
projection fields and height fields.
- Fixed issue that it was possible to connect multiple mesh resources
to a single rigid.
- Fixed issue that the OSD sometimes displayed an inaccurate elapsed
time when simulating without any solver in the scene.
- Fixed issue that it was possible to create frame rate keys with a
linear curve type using the property editor.
- Fixed an issue in the evaporation solver that prevented to properly
continue the simulation of an ongoing evaporation process after saving
and reloading a scene.
- Switched compression method for evaporation solver data to
lossless.
[3.0.5] - 2018-07-06
Fixed
- Fixed issue that rotating solids could lead to a timestep that was
smaller than required. This might significantly reduce the computation
time of gear simulations.
[3.0.4] - 2018-07-04
Fixed
- Undeterministic emission of rain source when duplicating a scene
with “save as”.
Changed
MPI:
- Before starting the simulation, PreonNode now logs the combined
number of threads that will be used in total, considering all worker
nodes. Additionally, each worker node will log how many threads it will
use locally.
- Added new PreonNode option “–testThreads” that allows you to start
PreonNode without specifying a scene file. It will not simulate
anything, but just log how many threads and worker nodes would be used
in a simulation.
- By default, PreonNode now ignores the scene property “individual
threads” and always uses the maximum number of available threads per
node. You can pass the “–allowSceneSpecificThreads” option to restore
the old behavior.
- Unless –noMachineCheck is specified, PreonNode will now check
whether all processes use at least 4 threads and will refuse startup
otherwise. A low thread count per worker is usually a sign of an
incorrect configuration.
[3.0.3] - 2018-06-21
Fixed
- Fixed very rare crash that could occur in MPI simulations with
mirror pressure off.
- Fixed issue that in mpi mode, .prstate fluid files were sometimes
skipped when using a lower view frame rate than simulation frame
rate.
Sensors:
- Made sensor plane and sensor mesh numerically more robust. This
fixes a rare issue in which the sensor plane measures “not a number”
values for very high resolutions.
[3.0.2] - 2018-05-30
Changed
- PreonNode now checks if all participating nodes run the same program
version and refuses to start if they don’t.
- PreonNode, PreonCLI and preonpy now start simulating and/or
postprocessing with the previous frame and end with the next frame if
the start and/or end time do not exactly match a frame.
- Removed internal statistics from the deployed version of
PreonLab.
- The “Saving” timing of the scene is now consistent with the
“Postprocess” timing in that it is updated every simulation
substep.
- Improved error / info messages in case .prsampling files can not be
loaded in MPI simulations.
Fixed
- Fixed rare crash in connection editor when grouping an already
existing group.
- Fixed number of fluid particles statistics in MPI mode.
- Fixed issue in the plot dialog that auto-zoom did not work
sometimes.
- Fixed that dynamic rigid bodies did not get a rotation from two-way
coupling forces if the respective movement axis were frozen.
- Fixed numerical precision issues in Preon Renderer when using a
camera with a high far clip distance.
- Fixed issue that color gradient backgrounds were sometimes not
rendered correctly in Preon Renderer.
- Fixed issue that the warning “Unable to achieve volume flow rate
because number of emitted particles is zero!” was emitted for area
sources during scene loading for no reason.
- Fixed wrong summed volume statistic of Sensor plane and Sensor mesh
in multiple cases (e.g., when the behavior was keyframed from inactive
to active, when resimulating from the start without removing existing
data, when changing the position/orientation during in the middle of the
simulation).
- Fixed that PreonNode, PreonCLI and preonpy postprocessed the wrong
frame range if a time range was supplied or the time in the scene file
was used and the simulation and postprocessing (view) frame rate had
different values.
- Fixed the output of the number of used simulation threads in the
CLI/preonpy when starting a simulation and not all possible threads are
used due to the available license.
- Fixed potential crash, that theoretically could happen when
performing license related tasks.
- Fixed Python2.7 compatibility.
[3.0.1] - 2018-05-03
Added
- Added sanity check when starting PreonNode to prevent PreonNode
running multiple times on the same machine.
Changed
- The alpha component of the object color is now ignored for particle
rendering. Transparency is still possible (as before) using the opacity
property.
Fixed
Miscellaneous:
- Fixed that info log messages were not shown on some systems.
- Fixed crash that could occur in some cases when starting
post-processing.
- Fixed area source memory leak.
- Fixed crash that could occur when switching mirror pressure in the
Preon solver on or off.
- Fixed issue that rotated sensor planes sometimes measured
inaccurately.
- Fixed that scenes written with v2.3.2 did not load the simulation
end time correctly in newer versions.
- Fixed a typing error in the property name of “EVP computation
method” (located in property group “Physics->Evaporation Solver” of a
Preon solver object).
preonpy:
- Fixed bug that causes preonpy to create empty directories when using
relative paths.
[3.0.0] - 2018-04-10
Added
GUI:
- New scale draggers in “Scale” mode when control key is pressed which
allow scaling in one direction only.
- New option to show the bounding box and axial extents of an object
under “Appearance”.
- Particle picking mode - Select single fluid and solid particles to
print their physical values in the on-screen-display.
- The preonpy
simulate
, post_process
and
load_frame
methods are now available in the Console in
PreonLab.
- Added a ‘Set as active camera’ action to the right-click menu of
cameras.
- Added
CTRL+b
shortcut for toggling between behaviors
(active, cache and inactive).
- Added postprocess dialog which allows to change which objects will
be postprocessed.
- Added 3-type-coloring to rigids with default colors blue, green and
red.
- Added right-click action “auto-colorize”, which randomly colorizes
all selected solid objects.
Connection editor:
- Added filtering based on connection type to the connection editor
which allows to reduce the number of visible objects and connection
types.
- Added button to automatically arrange visible objects.
- For large scenes, the anti-aliasing is now disabled in the
connection editor. This may result in “staircase” rendering of edges but
should speed up rendering of the connection graph.
Sensors:
- The scene now has a property “update sensors at substeps” which
enables or disables sensor updates at simulation substeps. If this is
turned off (which is the new default), sensors will only be updated at
full frames (according to the view frame rate) during the simulation.
This improves performance, but it also might lead to inaccurate
post-processing results if the view frame rate is not high enough.
- Added particle tracker which tracks the physical values of a certain
fluid particle defined by its ID and shows its trajectory.
- Added new property “TangentialVelocity” for sensor planes and sensor
meshes that measures tangential velocities.
- Statistics for height field and velocity projection field.
MPI:
- Added MPI support. Distributed MPI simulations can be launched via
the new executable PreonNode.
- Added lightweight MPI implementation wrapper, so that the specific
MPI implementation (OpenMpi, MPICH) can be chosen at install time.
Thermodynamics:
- Added computations of thermodynamics between fluid-fluid,
fluid-solid and fluid with implicit air phase.
- Added relevant thermodynamic properties like temperature to Preon
solver, solid objects, particle sources.
- Added coloring mode for temperatures.
- Added volume sampling of solids in addition to the boundary
sampling. The volume sampling is employed for solids which require the
computation of the thermodynamics across their volume.
(experimental)
Film wetting:
- Added a model to simulate the wetting of solid objects. Fluid
particles do now lose fraction of their mass when in contact with solids
which have film wetting enabled.
- Added relevant properties for film wetting to solid objects.
- Added visualization mode for film wetting.
Evaporation:
- Added computational model to simulate the evaporation of fluid and
film wetting for solid objects.
- Added relevant evaporation properties to Preon solver and solid
objects.
- Added an air object that provides boundary conditions for fluid-air
interaction w.r.t. thermodynamics and evaporation.
Sources:
- You can now connect a point object to a volume source via the new
“Badpoint” slot. If fluid generated from a seedpoint will reach this
point, the volume source will not emit particles but instead print an
error and visualize the shortest path from the seedpoint to the
“Badpoint”. This helps to detect small holes in your geometry that
prevent a successful filling.
- “Static source area” is now enabled by default for Area sources
because it can greatly improve performance in some scenes. If you need a
dynamic source area, please enable the option manually.
PreonCLI/preonpy:
- Added simulate and postprocess methods that require no start and end
frame and instead use the information from the scene.
- Simulate and postprocess methods now also take start and stop time
instead of frames (format “mo:d:h:m:s:ms”) (preonpy only / PreonCLI
still parses frames only).
- Postprocess method allows to specify a whitelist of objects that
should be postprocessed.
Licensing:
- New license options for distributed simulations using MPI.
- PrePost can now simulate with 2 threads which allows to verify scene
setups.
- Added more options and informations to license dialog. Number of
total and free licenses for the current license server are listed. Added
options to checkout different license types and to add simulation
threads to PrePost license.
Miscellaneous:
- Possibility to apply the scaling of an object to its pivot.
- Car Suspension Model for wading simulations: The deflection of the
suspension of a car can be modeled based on the pressure forces exerted
on the sprung mass of the car by fluid. The model improves water wading
simulations with high car velocities and/or high water levels.
- Added new object “Point cloud resource” which represents spatial
data imported from external CSV files.
- Added subgroup “Transform connections” to property group
“Transformation”. Its properties define the behavior of an object when
added/removed from transform hierarchies and their behavior within such
a hierarchy. Therefore, the property “inheritance mode” has been moved
to this subgroup as well.
Changed
GUI:
- The message window and the console are now shown in the same area as
the property editor as a dedicated tab (per default).
- Reworked the console with more detailed outputs, and to support drag
and drop of script files and control over last run scripts.
- Properties that are encoded by a string, e.g. a name, are only
changed when the editing finished. This makes renaming objects much
easier as they temporarily (while editing) can have the same name as an
other object.
- Ordered the menu entries in File->Import and File-Export
alphabetically.
Timeline:
- Timeline has now three dedicated modes: Simulate, Playback,
Postprocess. The playback mode does not change any statistic data of
sensors.
- Single-step is enabled by pressing the control key (defined in User
Preferences) when mouse is over mode toggle.
- Timeline supports zooming with the mouse (either pressing middle
mouse button and drag or scrolling with the mouse-wheel).
- Start and end times for simulation and playback/postprocess mode can
be specified via movable markers in the timeline and via the
corresponding scene properties.
- In simulation mode, frames correspond to simulation frame rate,
while for post-process and playback, the frames correspond to the view
frame rate.
- Changing frame rates does not change the end time.
- Clicking in the timeline does not stop the simulation, postprocess
or playback run anymore.
Solver:
- Enabled particle file compression by default for new scenes.
Sources:
- Removed “preview particles” option from the volume source. The
preview is now triggered via a right-click action.
Sensors:
- Volume sensor: In addition to measure the volume of fluid particles,
now you can specify to measure the volume of rigid particles as
well.
- It is now possible again to connect a wetting sensor and a force
sensor to the same solid.
Renderering:
- Preon renderer now draws color legends of all objects intstead of
just fluids.
- Preon renderer is now active by default (only matters if you connect
cameras to it).
- Fixed issue that fluid behind many layers of transparent objects was
sometimes invisible.
- Exposed “max. solid recursion depth” and “max. fluid recursion
depth” properties to the user.
- Preon renderer now supports the “range exclusively” coloring option
for fluids.
- Removed possibility to connect a material to Preon Renderer which
controlled the background color. Also removed “fixed background color”
property and advanced anti-aliasing properties.
CLI:
- Changed the executable name to PreonCLI.
Miscellaneous:
- You can now specify two background colors instead of one in the UI
Settings and in Preon Renderer. The two colors are then used to draw a
smooth color gradient across the hemisphere.
- Improved scaling behavior of the scale dragger for very small and
big objects.
- Color legends of sensor plane, height field and velocity projection
field now show units.
- The color property of the sensor plane now also specifies the color
for cells where no values are measured. This also allows it to be set
transparent by reducing the alpha value of the color.
- Collider settings are now stored in the scene file.
- In the keyframe editor, the keyframe time can now be entered (and is
displayed) in a more readable format (i.e. “mo:d:h:m:s:ms”). Entering a
unitless number equals entering a time in seconds.
- Simulation boundary domains now only delete particles of connected
Solids.
- Added option “dynamic particle deletion” for Solids. This enables or
disables dynamic particle deletion during the simulation based on
boundary domains. It is off by default which improves performance in
some scenes.
- Removed “cull rigid particles” for Solids. If there are connected
boundary domains, this is now done automatically.
- Added title and unit to the color legend in the OSD of the airflow
visualizer.
Optimized
- Improved performance in simulations that use a scripting domain (for
instance wading simulations).
- Improved performance in simulations with many moving solids.
- Improved performance in scenes that delete solid particles with
boundary domains. However, please note that you need to connect boundary
domains to Solids manually now.
Fixed
Keyframe Editor:
- Crash when selected object has no keyable properties.
- Statistics of statistic resources are not cleared when starting a
simulation or on reset.
- The edit fields for changing keyframe values are now correctly
cleared when the keyframe editor is reinitialized (e.g. when using
undo/redo on keyframe changes).
- The viewed area is now kept when the keyframe editor is
reinitialized (e.g. when using undo/redo on keyframe changes).
Solver
- Fixed issue that enabling particle compression could lead to
instabilities when loading a frame and starting the simulation from
there. The fix slightly increases disk consumption.
- Fixed minor inconsistency in the computation of the “Fluid
Particles” statistic.
Sources
- Fixed rain source emitting particles too far away from each other in
some cases when “specify drop size” is off.
Renderering:
- Fixed minor bug in photon mapping lighting.
- Fixed issue that scripted particles were sometimes not rendered
correctly when using the solver option “render scripted particles.”
- The renderer dialog now automatically shows the current frame if it
was rendered using “Render sequence”.
- Fixed being able to start rendering a sequence while a single frame
is rendered which lead to a deadlock.
- Fixed issue that sometimes transparent objects were displayed
incorrectly after resizing the window.
preonpy:
- When querying the minimum/maximum value of a statistic sequence,
undefined values are not considered in the response.
Miscellaneous:
- Fixed rare issue in triangle mesh BVH construction (used in Volume
Source, Area Source, rigid sampling, Sensor Plane and Preon Renderer)
that could lead to a stack overflow on windows and poor performance on
other platforms.
- Fixed video export misjudging the duration of the ouput video if the
user tries to export a subset of the rendered images.
- Fixed an issue with picking if mouse is only moved horizontally or
only vertically while mouse button is down.
- Fixed issue that it was possible to connect some incompatible
connection slots in the connection editor.
- Fixed an issue in the volume source in cases where a seedpoint is
employed and positioned outside the bounding box of the source.
- An air flow object without a given sample data path now just uses
the set air velocity everywhere instead of not applying any force.
- Prevented insertion and deletion of objects while the simulation /
playback thread was running.
- The sensor mesh color legend is now directly shown/hidden in the osd
if the visiblity of the sensor mesh changes.
- Fixed the issue that the warning “AABB outdated” has been shown
unjustified.
- A warning message box is now shown if there is no fluid connected
when trying to generate pathlines.
- Fixed crash that could occur when simulating after deleting the
connection from a solid to a sensor mesh.
- Fixed very rare issue that geometries were not correctly sampled
with particles when using Mesh_Independent sampling.
- Fixed mesher files not being copied when saving the scene under a
different name using “save as”.
- Data and statistics of deleted objects are now restored for all
object types when undoing their deletion (in constrast to only fluids,
sources and rigid objects).
- A transform group is now also created for single imported meshes
when the create transform group checkbox is checked.
- Fixed issue that wetting sensor data generated with the CLI was
sometimes discarded when post-processing the scene with the UI.
- Fixed very rare crash related to changing the frame rate using the
property editor.
[2.3.2] - 2018-02-05
Fixed
- Fixed crash that could occur in some cases when a rigid used the
“cull rigid particles” option.
[2.3.1] - 2018-01-18
Changed
- Made new rain source properties for varying drop diameters optional,
disabled by default.
Optimized
- Improved playback performance for scenes with many objects.
Fixed
- Fixed OpenGL clipping issue leading to a black screen that could
occur in very rare cases.
- Fixed threading issue in Preon Renderer that could lead to
non-deterministic artifacts.
- Computing a time step that advances to the next simulation frame if
there is no active solvers with particles and no active source connected
with any solver.
- Fixed issue that right-click actions didn’t work on meshes imported
via the new mesh import dialog.
- Added checks for preonpy to have nice error messages when accessing
objects from scenes that are not loaded anymore.
Sources:
- Too pessimistic time step prediction with respect to rain source
flow rate.
- Time step can not be changed by sources if solver time stepping is
not adaptive.
[2.3.0] - 2017-12-14
Added
Sensors:
- Added sensor mesh, which allows you to use the functionality of a
sensor plane on a mesh surface.
- The sensor plane now has a property “flow rate mode” that controls
how the plane orientation influences the flow rate computation.
Miscellaneous:
- Wetting sensor: Added the possibility to export sensor data on a
per-sample basis. Further, the user can choose to export any or all of
the values that are measured by the wetting sensor.
- Added new Statistics Resource object. With this object, externally
generated statistics can be imported via CSV files and compared to
PreonLab scene statistics in the plot dialog.
- Boundary Domains now have statistics printing the fluid volume which
is currently scripted and deleted by them and the overall sum of deleted
fluid volume.
- Added new mesh import dialog, which allows the user to select which
submeshes to import.
- Added progress bar when loading a scene.
Changed
Sources:
- Rain source: Reworked the generation of raindrops. It is now
possible to specify minimum and maximum drop diameters to emit varying
raindrops consisting of multiple particles.
- Particles generated by a volume source are stored to disk for frame
0. Resuming a simulation from a frame in which the volume source emits
does no longer result in duplicated volumes.
Messages:
- The message window is expandable now. By default it is closed,
giving more area for the graphics window. Furthermore, there are
different tabs for different message types.
- Preon Solver does now only print warnings regarding not being able
to load particle data if it expects data to be available.
- Ensight Gold Export now shows a dialog if no solver data exists to
export instead of printing a warning.
Timings:
- The overall computation timings have been revised. The total time is
now referring to the total time needed for PreonLab to simulate and
update from start to end. Thus, every single computation and update
process including serialization of data and GUI update times is included
instead of just summing up the computation time for collider and physics
as was done before.
- By default less timings are printed. Granular timings can still be
shown by enabling the new property of the Scene object in OSD Settings
named “show granular timings”.
- “prsim” files are no longer written.
Sensors:
- Force sensor: When exporting per-sample data to CSV, you can now
choose to export pressure force, adhesion force, friction force and
pressure.
- Sensor plane: When exporting per-sample data to CSV, you can now
choose to export any or all of the values that are measured by the
sensor plane.
OSD:
- Force sensor, Sensor plane, Preon Solver show less statistics in the
OSD by default. You can show all statistics by toggling the property
“Statistics->OSD Settings->show detailed forces /
statistics”.
Import:
- Renamed Adams import to Animation import.
- The Animation import can now additionally also read the PreonLab
keyframe format for the animations of the imported meshes. Read the
manual for exact format instructions.
- The Animation import now throws better error/warnings if something
goes wrong (no animation files found, no meshes found, etc.).
- Improved the handling of mesh and position scaling when importing by
providing predefined units.
GL rendering:
- Added “gl auto sleep” setting in the UI settings. If this is enabled
(which is the default), PreonLab will disable the rendering of
simulation substeps if the user didn’t interact with the GL viewport for
at least 10 seconds.
- Accordingly, removed “force repaint” setting in the UI
settings.
Miscellaneous:
- Seedpoint is now the new default filling mode for the volume
source.
- Parts of the Python library distributed with PreonLab is now zipped
to reduce installation time and size.
- Removed close buttons of dock widgets. They still can be closed
using “Windows->Name_of_Widget”.
- Tweaked locked/unlocked icons in the keyframe editor.
- Meshes can now be imported via “File->Import->Import Mesh”.
This replaces “Add->Solid->Mesh”.
- Changing the path of a mesh resource object does not delete the
connections in case the new resource file contains exactly the same
number of meshes with the same names in the same order.
- When undoing the deletion of an object, the simulation data is
restored.
- No longer creating scene file copies in trash folder.
- Scene saving: When saving a scene under a new name the following new
rules apply: a) only folders contain any files in the new scene working
directory are created. b) only those resource files are copied which are
still used in the scene.
- Scene saving: A warning is given if the user saves a scene as
“portable” and the portable folder already contains a mesh file with a
file name identical to the name of a mesh file not yet made
portable.
- Changed naming algorithm for object creation. The generated unique
name now contains the proposed name in case of conflicts.
- When scene loading failed,
preonpy.scene
is set to an
empty scene.
- Force execution of Python code in the PreonLab console by
Ctrl+Enter, even if cursor is not at the end of the line.
- Added unit information to tooltips for physical properties like
position.
- Dialogs no longer close when pressing enter without focus on the
‘OK’ or ‘Cancel’ button.
Optimized
- Optimized Preon Renderer performance when used as a
post-process.
- Reduced memory consumption during post-processing by up to 50%.
- Reduced memory consumption while simulating by up to 15%.
- Optimized Force Sensor computation performance.
- Optimized Force Sensor visualization performance when using the
“show particles” option for the corresponding rigid.
Saving and loading
- Optimized the size of the scene file (.prscene) in general (e.g., by
reducing the number of indentation spaces) and by encoding keyframe
sequences more efficiently.
- Fixed frame loading efficiency issue when using a scripting boundary
domain.
- Rigidstate files only written if there are dynamic objects in the
scene.
- Fluids no longer serialize their density buffer. This saves hard
drive space.
GUI
- Improved scene inspector UI update performance.
- Reduced number of GL repaints in scenes that simulate very
quickly.
- Improved GL OSD rendering performance.
Fixed
Keyframe Editor:
- Fixed issue that the csv import created linear interpolation
keyframes for enum or boolean sequences.
- Fixed that “Fit to timeline” did not work if there was no
keyframe.
- Fixed that “Fit to curve” did not work properly for very small
values.
- Fixed that “Fit to curve” deselects the currently selected key
marker in the keyframe scene.
- Fixed that with no keyframes, the line indicating the current
property value ended at the simulation end time.
- Fixed an issue that when importing keyframes via CSV all keyframed
properties were locked instead of only the sequences with imported
keys.
- Fixed issue that undoing a keyframe creation did not restore the
property’s previous value in all cases.
- The keyframe dialog is now easily closeable on systems with GNOME 3
if no object is selected.
Sensors
- Fixed Force Sensor measuring very inaccurate adhesion and friction
forces when using no-gap.
- Fixed rare crash caused by Force Sensor visualization.
- Fixed issue that pathlines did not serialize their start frame,
which could lead to wrong playback.
- Fixed issue that sensor data was not updated when incrementing a
frame in playback mode.
- Fixed an issue where incrementing the view frame via the timeline
would update collected sensor data (e.g. update wetting times).
- Fixed an issue in the sensor plane loading for sensor planes with
property ‘active cells’ set to ‘trimesh’.
- Fixed issue that color legend was still shown for force sensor even
after the connected solid was disconnected.
Renderer:
- Fixed minor bug in absorption term of the water material.
- Fixed crash when rendering an inactive fluid.
preonpy:
- Fixed issue that no
preonpy.SceneLoadFailed
is raised,
if a scene could not be loaded 2 times in a row.
- Now preventing connection loops in preonpy.
Miscellaneous:
- Fixed collider not being able to show an OSD.
- Fixed a problem in collider and bullet settings that numbers with
more than 5 decimals or larger than 99 could not be inserted.
- Undoing and redoing is not possible anymore during simulation,
fixing a possible crash.
- Fixed very rare issue that solids were not sampled correctly with
boundary particles.
- Fixed issue that statistics were not written to disk in some
cases.
- Scene saving: If the cached data of an object was not copied to the
new scene destination (decision by the user), the cache info
(e.g. graphical mesh representation, timeline etc.) in the GUI is
updated accordingly.
- Fixed floating point precision issue when using the “Compute System”
command.
- STL meshes with empty submeshes can be imported now.
- Fixed issue that particle spacing was in rare cases not updated for
objects that were copied and pasted.
- Fixed a crash when trying to start PreonLab using ssh -X which is
not supported.
- Fixed crash when duplicating objects directly after executing Python
scripts, which did not create any object.
- Fixed density-based coloring of fluids.
- Fixed that objects created by pasting using
CTRL+V
were
not directly selected.
- Fixed undo/redo for airflow imports.
- Fixed auto-zoom issue in plot dialog.
- Fixed undo/redo functionality for the “align to gravity”
utility.
[2.2.4] - 2017-11-15
Fixed
Renderer:
- Fixed the issue where GL frames would not be written to disk anymore
if the PreonLab GUI window was minimized and/or not visible
anymore.
Volume source
- Fixed a numerical error in the seedpoint algorithm of the volume
source which computed different fill volumes for different particle
spacings.
Miscellaneous:
- Fixed one issue that caused PreonLab to freeze occasionally on
Windows 7 when the PreonLab window is (partially) occluded by another
program.
- Fixed issue that in dialog boxes sometimes no numbers larger than 99
could be inserted.
[2.2.3] - 2017-10-25
Added
Area source:
- property “static source area”: If this property is enabled, the area
is only updated when launching the simulation, assuming that the area is
static and does not change over time. This can significantly improve
performance in some scenes.
Fixed
Connection Editor:
- Connections, that are not displayed, can’t be selected and also will
not be deleted when pressing
Del
.
Area source:
- Optimized area source emission for scenes with no-gap, and scenes
where fluid is emitted into high-pressure regions. This prevents fluid
leaking the area source in opposite emission direction.
Sensor plane:
- Sensor plane accounts for its velocity when measuring flow rates
now. In previous versions, the flow rate was always in global space.
This is the new default. Can be disabled by switching new property
“relative flow rate” on.
Miscellaneous:
- Warn on problematic characters in filenames for importing 3d
models.
- Fixed that sometimes dragger for objects were not appearing.
- Fixed partial hang of PreonLab, when importing of stl files via drag
and drop fails.
[2.2.2] - 2017-10-16
Fixed
- Fixed plot dialog not being able to show plots for scenes with very
small time steps.
- Fixed possible performance issue when using the static rigid culling
feature.
- Fixed issue that inactive sources could negatively impact
performance in some cases.
- Fixed potential Adams import crash.
- Fixed crash when executing commands, that print a progressbar when
called in the PreonLab console.
[2.2.1] - 2017-09-01
Added
GUI:
- Added ability to export forces (and pressure) for each sample of a
force sensor or a sensor plane via action “Export sample data to
CSV”.
- Added mode “WettingTime” to the wetting sensor. It keeps track on
how long the fluid(s) were in touch with the sensor. Coloring can be
used to differentiate wetting times within user-specified ranges.
- Added ability to colorize the mesh of a solid object using the
particle coloring.
Video Export:
- Added ability to export images generated by sensors as video using
the “Export Video” dialog.
Miscellaneous:
- Added experimental option to scene settings that affects the
scheduling of threads to logical CPUs. This can improve performance on
multi-socket systems when not using the maximum number of threads.
- It is now possible to copy & paste objects with CTRL+C and
CTRL+V.
- Added possibility to compress wetting sensor data (enabled by
default).
Preon Renderer:
- Added spray model to Water Material that detects turbulent regions
in which water is mixed with air and renders them as spray.
preonpy:
- Added Python bindings for CSV export of ForceSensor and
SensorPlane.
- Added Python bindings for Preon renderer.
- Added
path
and working_dir
properties for
Scene objects.
- Added read-only property “global position” for all spatial objects
which returns the global position considering all transform
parents.
- Added raycasting utility.
Bullet:
- You are now able to specify an external collision mesh that is used
for rigid body simulation instead of the original mesh. This also allows
to create a concave collision mesh based on multiple convex
submeshes.
Sources:
- New source type: Flat jet source.
Preon Solver:
- Added statistic showing the number of particles deleted by the
solver due to CFL violation or stuck prevention.
Changed
- Established new rules how the conditions of multiple simulation
boundary domains are combined. Checkout the manual for a documentation
of these rules.
- The wetting sensor now only supports one connected mesh.
- The
record statistics
, track statistics
and inheritance mode
properties are no longer keyframable.
Also fixed some other minor inconsistencies regarding keyframable
properties.
- The path property for file rigids is not displayed anymore if the
rigid is connected to a mesh resource.
- The volume source now has an option to automatically set the border
size based on the fluid spacing, also considering the no-gap option.
This option is on by default for new scenes.
- Added progress bars for boundary sampling and volume source filling
for improved responsiveness.
- Preon CLI and preonpy do not link anymore to any OpenGL or X Server
libraries.
- In preonpy, color properties do not accept color names (“red”) or
short html notation anymore (“#123” must be written as “#112233”
now).
- Removed the visualization of the film wetting from the wetting
sensor and added coloring option “WettingFilmBased” to solid objects
instead.
- The particle limit for sources and solids is now given in mega
particles, so a limit of “100” means 100 million particles.
Fixed
Keyframe Editor:
- Fixed undefined behavior in “undo/redo” commands for time/value
changes following the selection of a curve segment (i.e. not selecting
the key itself).
- Fixed an issue where the curve of a keyframe sequence was not
properly updated after a time/value change.
- Fixed issue that allowed to create behavior keys with an invalid
value.
- Fixed issue that allowed to use linear interpolation for boolean
keys.
Undo/Redo:
- Fixed “Adjust scale to spacing” not creating an undo action.
- Fixed undo/redo issue restoring properties when undoing the creation
of an object.
- Fixed undo/redo issue when restoring the creation of a camera
resulting in a not updated camera list.
- Fixed undo/redo issue when restoring the creation of a
material.
Preon Renderer:
- Fixed issue that allowed to use the water material as hemisphere
material, leading to a crash when rendering.
- Fixed rendering issue that could occur when using a no-gap solver
and the water material.
- Fixed issue that could lead to distorted output images.
Bullet:
- Fixed that objects with collision shape
gImpactMesh
did
not collide with other objects using gImpactMesh
.
preonpy:
- Fixed
Scene.simulate_step
. It is now implemented as a
context manager, so the calling scheme has changed. Consider the API
documentation for an example.
Miscellaneous:
- Fixed a startup crash when no OpenGL context could be found.
- Fixed issue when simulating with a scripting boundary domain and an
active Preon Renderer.
- Improved error handling for airflow import.
- Removed Group “Transformation” and Property “Color” from wetting
sensor.
- Changed coloring range variables from type float to double. Thus,
user input is not changed in the property editor.
- Fixed efficiency issue that could occur with certain geometries in
Preon Renderer and the Volume Source.
- Fixed issue that clipping planes did not update when they had a
scale of zero.
- Fixed issue in plot dialog that smoothing width was sometimes set to
0.
- Fixed misleading color interpolation in color legends.
- Fixed file browsers opened with relative file paths not opening
where the relative paths point to.
- Fixed issue when changing the current camera in the Rendering Dialog
while rendering an image.
- Objects, that are hidden in the scene inspector, are now also hidden
in preonpy.
- Fixed issue that a warning message was sometimes printed in the
console when opening the video export dialog.
- Fixed particle type based coloring not showing different colors for
scripted and sleeping particles.
- Fixed issue where continuous sources would emit particles
differently after resetting and re-simulating a scene.
- Fixed issue in force and wetting sensor when loading a scene which
was caused by overwriting particle IDs.
- Fixed crash caused by the wetting sensor when simulating without a
fluid.
- Fixed issue that force sensor statistics may differ significantly
during playback from the statistics measured during simulation.
- Fixed issue that property editor did not update after locking or
unlocking a camera via right-click menu.
- Fixed occasional flickering issue for glossy surfaces in the
graphics window.
- The video export can now handle input images in which the width or
height is not divisable by zero.
- Fixed issue when using GL recording and switching between camera
views.
[2.1.4] - 2017-07-20
Changed
- PreonCLI and preonpy can now be used via ssh without passing the -X
option.
- Transform groups now have a simple visual representation.
- Draggers are not displayed anymore if the corresponding property
(position, orientation or scale) is hidden.
Fixed
- Fixed wetting sensor issue that could lead to non-deterministic
results for some geometries.
- Fixed error in computation of frictional and adhesional forces on
dynamic solid objects and in force sensor (when density of solid
differed the density of fluid).
- Fixed issue that PreonLab showed a file open dialog when creating
File rigids using the preonpy console.
- Fixed issue when creating keyframes from preonpy.
- Fixed issue when starting a simulation from a frame other than zero
with enabled progressbar in preonpy.
[2.1.3] - 2017-07-10
Added
- Added property in “Scene -> Statistics -> OSD Settings” to
decide on whether and which rigid particle counts are shown in the
OSD.
- Added properties for each object for disabling tracking and
recording of statistics.
- Read only property which prints rpm converted from revolutions per
second (if orientation control mode is set to revolutions per
second).
Changed
- “Information” property group renamed to “Statistics” with subgroups
for “OSD Settings” and “Statistics Recording” related properties.
- In case there is a “disk full” error, PreonLab now prints the
corresponding file path in the error message.
Fixed
- Fixed force sensor issue when using a very small fluid spacing and
pressure is displayed in Pascal.
- Fixed unwanted change of current serialization path when pressing OK
in user preferences dialog.
[2.1.2] - 2017-06-22
Fixed
- EnSight Gold export: Fixed the bug that lines written to the case
file could be longer than 79 characters (causing a warning in
e.g. Paraview, because it does not adhere the format
specification).
- Addressed the issue that for some versions of avconf (ffmpeg) the
start_number for the first input image must be at least 1.
- Fixed issue in the experimental viscosity model Laminar_Morris.
Optimized
- Fixed efficiency issue that could occur when using a scripting
boundary domain.
[2.1.1] - 2017-06-09
Fixed
- Fixed pathline playback issue with a non-zero start frame.
[2.1.0] - 2017-06-07
Added
preonpy:
- Added interface to create, delete and query connections.
- Added interface to create and query keyframes.
- You can now use
preonpy.scene
to get the currently
active scene.
- Added a progressbar for simulation and post-processing.
- Added cancel possibility via Ctrl+C.
- Added a read-only property to get the available statistic
names.
Plot Dialog:
- Added optional smoothing filter that allows you to remove noise from
measured data.
- Added option to use a fixed time step for plotting.
- Added option to toggle automatic updating of time and value ranges
during simulation.
- Added additional button for exporting all statistics in the plot
dialog regardless of whether they are checked or unchecked.
- It is now possible to show the statistics from multiple objects in a
single plot dialog. Select multiple objects and then click on the plot
dialog icon.
GUI:
- Added the option to customize the control key (Shift by default,
used for e.g. camera control) in the User Preferences.
- Force sensor: Added pressure computation (in Pascal) to show min.,
max. and net pressure. Further, the pressure can be selected for
coloring.
- The console is now based on the preonpy API.
PreonSolver:
- Added one dimensional solver option.
- Added new stopping criterion for pressure solver which also takes
the expected maximum density error into account. This is the new
default.
- Added additional time-step criterion for viscosity forces.
- Added experimental new viscosity force (Laminar_Morris).
- Added minimum velocity statistic. Coloring now also uses this min.
velocity instead of 0.
Preon Renderer:
- Preon Renderer now supports pathlines.
CLI:
- The CLI is now based on the preonpy API.
- The CLI can now execute Python scripts or simulate
.prscene
files.
- Added a progressbar for simulation and post-processing.
- Added cancel possibility via Ctrl+C.
Miscellaneous:
- Added option to only inherit position or orientation from a
transform parent.
- Rigid friction in Bullet Settings of an object is also applied as
rolling friction on the rigid object internally.
Changed
PreonSolver:
- Adhesion and viscosity forces have been re-calibrated for no-gap
option of solver in order to better match with simulations which have
no-gap off (default).
Plot dialog:
- Replaced “fit to plots” button with separate “fit to time” and “fit
to value” buttons.
- Redesigned toolbar to make space for new functionality.
- Displaying a new sequence in the plot dialog does no longer
auto-zoom.
- If the only displayed plot is a straight line, the auto-zooming is
improved by centering the plot and choosing an good zoom-level.
- When no plot is selected, the export button is now disabled.
- The marker dot for the current value of a plot now is always
displayed as long as the mouse is in the plot view (no longer disappears
when mouse is more than half the vertical plot size away from it).
Alembic:
- The export button in the alembic export dialog is now disabled if no
object is selected.
- Importing alembic objects now creates an undo event.
- Importing alembic object without “hotload” now creates keyframes for
transformation samples.
- The transformation group in the property editor is now hidden if the
property “load transformation samples” is on.
Airflow import:
- Respective delimiters are now automatically detected for csv
import.
- Column names can now be chosen via a drop down menu which is
automatically filled.
- Import can be canceled.
- More robust import. Can even import some not correctly formatted csv
files.
- Better feedback if something went wrong during import.
- Asking user before (undesirably) overwriting existing
.prairflow
file.
- Changed default
discard samples
setting form
StandardDeviation
back to None
, as it was in
1.4.1.
Ensight Export:
- It is now possible to choose if the particles should be exported as
nodes or elements.
- It is now possible to export the density.
preonpy:
- If a scene open fails, an exception is raised instead of returning
an empty scene.
- Removed the
silent
and default_value
parameters from get_statistic
and
get_statistic_avg
. Now an exception is raised in error
cases.
- Instead of returning numeric limits on error in
get_statistic_min
and get_statistic_max
an
exception is now raised.
- If object deletion failed, an exception is raised now.
- Changed some exception names:
PropertyConvertTypeException
to
PropertyWriteError
, InvalidObjectException
to
ObjectInvalid
and several names ending
withException
to ending with Error
.
SceneLoadFailed
is raised when scene load fails instead
of ValueError
.
ObjectCreateError
and ObjectDeleteError
are raised instead of returning None
and raising
RuntimeError
.
get_property_enum_values
now raises
PropertyError
instead of KeyError
if the
property is no enum.
- If a property name could no be found,
PropertyNotFound
is raised instead of KeyError
in many cases.
Miscellaneous:
- Removed deprecated property connections. Old scenes containing
property connections will write an error message during loading.
- Fluid spacing slots are not shown in the connection editor
anymore.
- “Adjust scale to spacing” action is now also available for sources,
cuboids and cylinders and planes.
- Bullet collision shape settings are now exposed for scripted and
stationary rigids.
- Removed collision margin property. For all solids, the collision
margin is now always derived from the fluid spacing.
- Not printing warnings if frame data of continuous sources are not
available on disk.
- Changed area source particle alignment so that it is consistent with
the square source.
- When a new Preon Renderer is inserted, it is now initialized with
the current scene background color.
- Added an option for each object to export statistics as CSV
automatically during simulation or playback.
- Added option for pathlines to enable playback over time.
- Added option to set a lifetime for pathline segments during
playback.
- Continuous sources now only script the particles they have
emitted.
- Scripted particles now compute a correct density. This solves
problems when a continuous source emits particles very slowly.
- The CLI no longer contains a command prompt.
- Keyframe Editor: ‘Copy keys’ button is enabled/disabled depending on
whether at least one of the selected properties holds a keyframe
sequence.
- When inserting a “Point” object, the point is not connected
automatically to a volume source as seedpoint anymore. Accordingly, when
inserting a volume source, it is not connected automatically to an
existing “Point” object to use it as seedpoint.
- When in PrePost licensing mode, the Reset button now is disabled in
addition to the simulation button.
Fixed
Keyframes:
- Fixed issue that keyable properties of disabled property groups are
still shown in the keyframe editor.
- Prevented the Keyframe Editor from adding enum keyframes with
invalid values.
- Fixed keyframe editor not being updated when the visibility of
properties changed.
- Keyframe-Editor “Remove for all properties” action: Fixed being
asked if deletion of locked keyframe is ok even when no such key will be
deleted.
- Keyframe-Editor “Remove for all properties” action now creates an
undo-event. This means you can undo the deletion.
- Fixed a problem where two properties were selected in an opened
KeyframeEditor when switching between objects.
- Fixed camera keyframing not possible using the CTRL+K and CTRL+L
shortcuts.
Plot Dialog:
- It is now possible to zoom to smaller ranges in the plot
dialog.
- Fixed crash when deleting an object while its plot dialog is
open.
- Fixed crash in Plot dialog when entering an invalid range.
- Fixed plot dialog issue concerning very small time or value
ranges.
- Fixed unintuitive cutoffs when entering time ranges in the plot
dialog.
Miscellaneous:
- Fixed alembic mesh being not immediately displayed when inserting it
via “Add->Solid->Alembic Mesh”
- Fixed preonpy performance issue on some Linux systems.
- Crash when closing PreonLab and the current frame has been changed
by user without accepting the change by pressing ‘Enter’.
- Fixed bug when exporting CSV data from preonpy (and probably the
CLI) but no data is available.
- Fixed icons in the User Preferences showing the color of a color
property.
- Fixed volume source issues when using seedpoint filling in
combination with a very small fluid spacing.
- Fixed issue that changes to collision margin were sometimes
ignored.
- Fixed issue that “freeze movement” switches for solids had no
effect.
- Disabled loading of cached scale transformations from disk during
playback for all solid types except alembic.
- Fixed issue that sometimes the bullet collision shape was not
created correctly for solids when using a mesh resource.
- Fixed area source such that fluid particles are generated in a
deterministic order.
- Fixed bug that scene and view frame rate were reset on scene loading
if framerate keyframes were present in the past.
- Fixed precision issue of mesh independent boundary sampling
algorithm for very small spacings.
- Fixed bug that allows to set invalid object names from preonpy.
- Fixed issue when loading cached pathlines from disk.
- Fixed unnecessary serializing of rigid state extension.
- Fixed generation of invalid pathline segments for deleted
particles.
- Fixed issues with HDPI displays.
- Fixed PreonLab not asking for saving an unsaved scene when loading a
new scene via drag & drop.
- Fixed source spacing not being set on a source when two solvers are
first inserted and then one is connected to the source.
- Fixed spacing being reset to 0.05 when a second solver is
inserted.
- PreonLab now asks if the user wants to stop a running simulation
before closing, opening a scene etc. This also prevents a crash when
loading a scene with drag & drop while a simulation is running.
- Fixed that inactive objects did not have their data cleaned when
reset is pressed. Now, only objects which have their behavior set to
cache keep their data on reset.
- Fixed loading of first frame although its already loaded when
resetting the scene. This now allows to change properties of dynamic
objects in frame 0 without them being overwritten when pressing
reset.
- Fixed small numerical deviations in force sensor due to
parallelization.
- Fixed issue that an error message was printed when inserting an Area
Source without inserting a solver first.
- Fixed platform dependent CSV import issue.
- Fixed loading of ForceField connections between AirFlow and solver
objects in old scene file.
- Fixed issue that deleting an object using the right click menu in
the scene inspector did not generate an undo/redo event.
- Fixed force sensor legends being shown in the OSD for invisible
sensors.
- Decreased the frame limits to 999999 to fix frame writing bug.
- Fixed issue that sometimes the renderer dialog did not clear the
status message correctly after rendering finished.
- Added missing spaces in “freeze movement” / “freeze rotation”
property names for Solids.
- Added message when attempting to open a non-existing image folder
using the renderer dialog.
- Fixed bug that occurred, when adding view frame rate keyframing and
the first keyframe was not at time 0.
- The no boundary gap option is now synchronized across solvers,
fixing problems for multiphase simulations.
- Fixed a bug where property groups could not be enabled/disabled
anymore after they have been multi-selected in the Scene Inspector.
- Fixed a bug that enabling/disabling property groups was not
reflected in the view in multi-selection mode.
Optimized
- Optimized rain source performance on systems with many cores.
- Fixed collider performance issue that sometimes occurred in
simulations with sparse fluid, typically raining simulations.
- Improved collider performance for scenes with non-moving boundaries
sampled with millions of particles.
- Added option for solids to avoid generating boundary particles
outside boundary domains if the transformation between rigid and
boundary domain is fixed over time.
[2.0.4] - 2017-05-24
Fixed
- Fixed issue when closing an untitled scene with a user-defined cache
directory.
[2.0.3] - 2017-04-06
Changed
- Increased the frame limits from 10 thousand to 1 billion.
- Removed deprecated divergence correction properties and
functionality.
- Relaxed the stuck prevention criteria default values to be less
aggressive.
Fixed
- Fixed mesh with same name as scene file not being found when
drag’n’dropped into the scene.
- Fixed potential OpenGL shader issue on some systems.
- Fixed issue that rigids created via alembic or adams import were not
deleted correctly.
- Fixed rare crash when closing PreonLab and the current frame has
been changed by user without accepting the change by pressing
‘Enter’.
- Fixed bug in CFL deletion criterion for no-gap.
- Fixed issue that scene statistics were erased during playback in
special cases.
- Fixed hiding of properties in preonpy when the visibility changes
dynamically depending on other property values.
- Fixed issue when switching between rotation modes of spatial
objects.
- Prevented creation of transform keyframes using hotkeys when using
an incompatible position or orientation control mode.
- Fixed performance issue when using a small integration time step for
acceleration keyframing.
- Fixed issue that scene statistics were erased during playback.
Optimized
- Fixed potential performance issue during keyframe creation.
[2.0.2] - 2017-03-20
Fixed
- Fixed crash when deleting the last keyframe of a derived sequence
when control mode set to velocity or acceleration.
- Surface offset clamping warning for Box and Cylinder is only shown
when the surface offset was actually clamped.
[2.0.1] - 2017-03-17
Fixed
- Fixed issue that source inflow unit “volumeFlowRate” was sometimes
overwritten with “velocity” when selecting the source in the Scene
Inspector.
- Fixed issue that area sources failed to update their areas in
certain rare circumstances.
[2.0.0] - 2017-03-14
Added
Preon solver:
- Added option which eliminates volumetric thickening of boundary.
(see no gap option)
- Added PairwiseForce Cohesion model (set as default model). This is
an improved version of the PreonCohesion force which is designed to be
resolution invariant. Its default parameter of 1 is calibrated for water
by TU Dresden. Old scenes using PreonCohesion model are automatically
converted to PairwiseForce model.
Creating Scenes:
- You can now set or keyframe the velocity or acceleration of an
object. To do so, change the new object property “position control mode”
to the appropriate option.
- You can now set rotations per second around an arbitrary axis for an
object. To do so, change the new object property “orientation control
mode” to the appropriate option.
- Added a message box asking the user whether he intends to change the
simulation or view frame rate globally when trying to change the
respective value on a frame other than zero. For a variable frame rate,
he is informed to employ keyframing.
- Keyframes copied from one selected sequence can now be pasted to one
other selected sequence as long as the data type is compatible
(e.g. when both sequences have keyframes represented by floating-point
numbers).
Preon renderer:
- Added support for rendering water caustics using photon
mapping.
- Added Preon Renderer dialog which allows to render single images or
image sequences, and displays rendered images. The dialog also removes
the need to connect cameras to the renderer object.
Export:
- Added export to the EnSight Gold format.
Python scripting:
- Added Python extension preonpy. This Python library can be used like
any other Python Library by importing it with “import preonpy”. This
simplifies automatic execution of simulations.
GUI:
- Added a border around context menus to highlight them better from
the background.
- Added a ‘Delete’ option to the context menu (right-click on objects
in Scene Tree).
- Tooltip for scene inspector items with full object name.
- Separation of time units for better readability in OSD and
timeline.
- Added option to turn off camera control using the mouse for specific
cameras. You can enable or disable camera control for a camera by
changing its “locked” property.
- When multi-selecting objects, the Property Editor now shows the
properties sorted in groups similar to single-select.
- Added a User Preferences dialog under the Settings menu that allows
to define preferences when creating a new scene.
- Added a ‘maximum number of threads’ option to the User Preferences
and a ‘individual #threads’ option to the scene settings which allow to
control the number of threads used by PreonLab globally and per
scene.
- Added a pop-up window to the ‘Reset’ button of Bullet Options and
User Preferences that asks for a definitive confirmation.
Changed
Preon solver:
- Improved time step prediction by splitting up simulation update into
explicit force computation, time step adaption, implicit force
computation and integration.
- Epsilon usage in CFL-based deletion criterion is now independent of
resolution.
- Exposed more options to the user on particle deletion for
numerically challenging situations and scenes.
- Improved accuracy for CFL-based deletion criterion.
- Improved performance due to better pre-condition of the pressure
solver system.
- Density correction for regions with sampling deficiency.
- Removed “Edit Caching” fluid dialog. You can now enable or disable
fluid data caching using the property editor. The properties are located
in the new “Serialization” group of the fluid.
- All Preon files storing particle data (.prstate, .prsampling) now
use an updated internal file version. This means that old versions of
PreonLab will not be able to load particle files generated with PreonLab
1.7 or higher.
- Property group “Compression” renamed to “Serialization”.
Solid objects:
- Removed fluid friction property. Added roughness property which
relates the viscosity of the fluid film at the geometry to the property
of the solid surface and the viscosity of the fluid in contact
with.
- Added warning when Bullet time step is too large which could lead to
wrong rigid body simulations.
- Added artificial particle limit for solid objects to prevent
generation of too much boundary particles by accident. This limit can be
modified by the user.
Sensors:
- Sensor planes now always measure and record all supported fluid
properties (velocity, pressure, etc.). The selected property now only
determines which data is visualized by the sensor plane. This means that
statistics for all fluid properties are always available no matter which
property is visualized.
- Improved accuracy of volume sensor with new property “sub particle
precision” which accounts for partial particle volume contributions. Is
set by default.
- Wetting sensor computes wetting only for connected fluids.
- Recent scene history is correctly restored (also) when not correctly
exiting PreonLab.
- When loading old scenes, the user is warned if simulation data need
to be converted. If he declines, the old scene and the related data are
not modified.
Misc:
- Removed “rotation y axis” property. This is obsolete because you can
now easily specify and keyframe the rotation around a specific axis
using the new orientation control mode option.
- Scene inspector: Groups now have a fixed order.
- Improved user experience in video export dialog. The slider that
controls the playback speed has been removed. Instead, the user provides
the input framerate (the number of images per second for the “input
stream”), and the playback speed will be computed and shown one line
below. If the input framerate matches the “view frame rate”, playback
speed is “1x”.
- Removed “underwater reflections” property from the water material
(they are now enabled by default).
- Clipping objects are not rotated anymore by default according to up
axis.
- Now displaying the number of particles to be generated for a volume
source as a property instead of as a statistic.
- In the past, the global transformation of an object was always
conserved when connecting or disconnecting a parent transform. This is
now disabled when using the orientation control mode “revolution” or
“revolutions_PerSecond”, because conserving the local rotation axis is
usually more important in these cases.
Fixed
- Stability issues of circle source for very fine resolutions.
- Removed non-resolution invariant scaling of circle source backplane
which caused non-plausible behavior for high resolutions.
- Scene inspector: Fixed collapsed groups being expanded automatically
after adding/deleting an object.
- Issue in post-processing dialogs when using separate view and
simulation framerates.
- Renaming an object to a name already assigned to another
object.
- Rename mandatory standard objects.
- Camera/selection mode being stuck, when clicking both mouse buttons
at the same time.
- Issue where the visibility of nodes in the connection editor was not
correct after removing connections.
- Active camera and quad view state were not correctly loading from
scene file.
- Sensor plane issue that occurred sometimes when changing the
framerate and reloading the scene.
- Occasional startup crash on specific linux distribution.
- Issue where a safe file dialog would not add the selected file
extension to the filename.
- Alembic export issue for objects with transform parents.
- Alembic export issue for scenes with another frame rate than
50.
- Issue with different (keyframed) view frame rates and video export.
Videos can now only be generated piecewise, one video per keyframe,
thus, preventing the misinterpretation of the number of rendered images
per second.
- Fixed Area Source border issue.
- Problem of hugely scaled point objects when they are not in screen
space, but camera zooms in on nearby region.
- OSD is now displayed again (if requested) for non-spatial objects
such as Preon Renderer.
- Fixed some inconsistent namings in PreonLab and in the manual.
- Fixed inconsistent display names and tooltips of some
properties.
- Copy resources dialog now lists OpenGL frames if present.
- Fixed water rendering artifacts at the transition between fluid and
rigid.
- Fixed Bullet reset bug.
- Fixed the number of particles to be generated shown with the scale
dragger when scaling a volume source.
- Fixed issue that renaming cameras had no effect on the camera
selection menu.
- Fixed issue that sometimes the floor grid was clipped by clipping
planes.
- Fixed PreonLab loading the wrong last simulation frame if an
exception is caught during simulation.
- Fixed that Preon renderer and Preon mesher used more threads than
allowed by the user.
- Fixed possible floating point precision problem in area and volume
source.
[1.4.1] - 2016-11-24
Changed
- Keyframe-editor: Paste button is correctly disabled when clipboard
is overwritten by other application.
- Boundary domains: The scripted velocity for velocity condition is
now keyable.
Fixed
- Video-Output: Some framerate ratios (e.g., 400 sim frames to 50
video frames) could not be exported. Now all ratios should be
possible.
[1.4.0] - 2016-11-14
Added
- Added ability in the connection dialog to also show nodes that are
connected to the selected ones.
- Added a button in the connection dialog to view selected objects by
zooming out and/or moving the view.
- The positions of nodes in the connection editor are now saved in and
restored from scene files.
- In the connection dialog, nodes can now be grouped to perform
following tasks: add multiple connections at once, remove multiple
connections at once, gaining better overview in large scenes, move
multiple nodes around in the connection scene at once.
- Added close button to connection dialog.
- Added DivergenceBased and VorticityBased coloring of fluid
particles.
- In the keyframe editor, keyframes of a property can be locked to
prevent further editing. Imported keyframe data is locked automatically,
too. Locked keyframes can be unlocked.
- In the keyframe editor, keyframes can be copied to the clipboard and
pasted to other objects, even across PreonLab instances.
- In the about dialog, the link to the current log file is now
clickable.
- Added a measure tool that simplifies measuring distances
significantly.
- Added a velocity offset property to the air flow.
- Added Liu Drag Model for the Drag Force which considers deformation
of single particles.
- Drag force now displays global velocity when rotating it via
draggers and as read-only property in the Information group.
- Added export dialog which simplifies the creation of a video from
the rendered images.
- Area source which allows you to emit fluid from an area bounded by
solid objects.
- Extended .prstate file format which now supports lossless and lossy
particle compression.
- Preon solver now supports on-the-fly particle compression, saving
disk space by a factor of 2 to 3.
- Added option to compress existing particle data when saving the
scene via “save as”.
- Added archiving option to only keep data of every x-th frame when
saving the scene via “save as”.
- Added view frame rate which can differ from the simulation frame
rate. This allows for example to post-process/render frames with a
different frame rate than saving particle data to disk.
- Added property to Preon renderer which allows to decide if the fluid
should cast a shadow.
Changed
- New icons for placement and measure mode, as well as locked/unlocked
and copy/paste keyframes in the keyframe editor.
- MemoryLocationBased fluid coloring now also displays a color range
in the OSD.
- RigidNeighborhoodBased fluid coloring is fixed and now colors
correctly after the size of the neighborhood (not on/off if there are
more than 18 neighbors) and shows a color range in the OSD.
- idBased fluid coloring is now named ParticleTypeBased to better
reflect its type. Loading old scenes will not automatically convert
idBased coloring to ParticleTypedBased coloring. Instead, VelocityBased
coloring will be set.
- In the keyframe editor, the time is snapped to the frame time when
moving the mouse across the view. Thus, new keyframes are created (and
existing keyframes are moved) in frame time steps.
- In the keyframe editor, new keyframes can be manually defined and
added via a button.
- Made the ‘inflow arrow’ that shows the inflow direction of a
square/circle/rain source an actual arrow (instead of a cylinder).
- Adjusted the scaling of the ‘inflow arrow’ that shows the inflow
direction of a square/circle/rain source according to the source’s
scale.
- Selected nodes are now highlighted in the connection editor.
- ForceSensor now always logs every force. The toggles only decide
which force contributions are displayed. This also fixed a bug that the
adhesion force could not be toggled.
- “Memory consumption” action is now an action of the scene instead of
the UI Settings (accessible via right-click).
- The arrow displaying the drag force air velocity is now 3D instead
of 2D lines.
- Reduced the memory consumption of sensor planes.
- The size of (transformation) points is now fixed in screen space.
This means that when zooming in and out the point always appears the
same size on the display.
- Moved “save as portable” functionality into the new “save as”
dialog.
- Added a progress bar to “save as” dialog.
- Default rigid-sampling method is now Mesh_Independent.
- Default near clip of cameras is now 0.01 and far clip is 1000.
- Whenever a new scene is created, the number of threads is now set to
the maximum number of CPU-threads available.
- Removed behavior property of Transform groups as keyframed
transformation are always applied.
Fixed
- Fixed not being able to place objects on fluid particles with the
placement tool.
- Fixed a minimally too large force being measured by force
sensor.
- Fixed removing and then undo-ing of static objects creating new
objects.
- Fixed duplicating an object with a transform parent not keeping its
global transformation.
- Fixed camera rotating to unit axis when looking straight up.
- Fixed osd being transparent in GL recording.
- Fixed not being able to manually change the path in mesh
resources.
- Fixed a problem that sensor planes wrote a csv file in the wrong
directory.
- Fixed cylinder lighting issues due to wrong normals when either top
or bottom cap are switched off.
- Fixed the drag force arrow not rotating with the rotation of the
drag force.
- Fixed issue with time step clamping to frame time which could lead
to CFL-based particle deletion in rare cases.
- Fixed issue that active camera view was not reset when creating a
new scene.
- Fixed issue of unresponsive and disappearing progress dialogs.
- Fixed issue that dragger of viewing camera could be visible in rare
cases.
- Fixed issue that statistics concerning the start frame were not
written during playback.
- Fixed an issue that the circle source did not continuously emit
particles when only a single particle fits in its diameter.
- Fixed Alembic Rigids that have “load transformation samples” set to
“off” not correctly loading orientation when loading a scene.
- Fixed PreonLab overwriting existing, user-created folders when a
scene with same name is saved.
- Fixed issue that playback still was on after pressing reset without
pausing simulation.
- Fixed bug that “Clean data” did not clean statistics and failed to
update the GL view and the timeline.
- Fixed GL recording issue that occurred on some systems when the OSD
was disabled.
Optimized
- Improved Preon renderer load balancing, resulting in better CPU
utilization for many setups.
- Improved timeline responsiveness.
- Inactive solids are not sampled anymore with boundary
particles.
[1.3.1] - 2016-10-05
Changed
- The columns in csv-exported statistics are now always ordered
alphabetically.
Fixed
- Fixed Adams import mapping angles larger than 180° to the range
-180° to 180°. This is a specific fix that only works when the rotation
axis is one of the unit axes.
[1.3.0] - 2016-08-17
Added
- Added a check box to the keyframe editor to enable/disable updating
the time on click in the graph.
- Added mesh resource object which loads a mesh file and provides an
outgoing slot for each loaded sub-mesh. This makes it possible to have
multiple individual rigid objects for a single mesh file (typically
stl).
- Dragging and dropping a mesh file now creates a mesh resource and
one connected rigid for each loaded mesh.
- Added a new column to the scene inspector that shows an icon if an
object is invisible in the according line.
- Added undo/redo support for MSC Adams import.
- When importing Adams data, a transform group is now automatically
created and connected to all imported objects.
- Added Core.postProcess(startFrame, endFrame) method to
PreonLabCLI.
- Added position and velocity statistics (and plots) for rigid
objects.
- Added new alternative boundary sampling algorithm that generates
fewer and more uniformly spaced particles for high-poly meshes than the
current algorithm. This fixes leakage and performance problems that
could occur in rare cases with the current algorithm. Currently, the
main disadvantage of the new method is that pre-processing is much
slower than with the current method (it is still well under a minute for
most scenes though). The new boundary sampling can be selected by
setting the “boundary sampling method” property of the rigid to
“Mesh_Independent”.
- Added vdafs resource object which imports transformation data from
vda-files and provides them as a transform output slot.
- Preon Renderer now supports Force and Wetting sensor.
Changed
- The up axis is no longer a property of UI Settings object but
instead is a property of the scene now.
- Made z-axis the default up axis.
- In the keyframe editor, updating the time on click in the graph is
now disabled by default.
- Moved collision shape properties of meshes into Dynamic Settings
group which is only visible when type is set to dynamic.
- Cameras with orthographic projection can now be rotated just like
perspective cameras.
- When a pathline has a transform parent, it generates pathlines in
local space relative to this parent. This makes it possible to see fluid
motion relative to a moving object, for instance water sloshing in a
moving tank.
- Clipping plane is now replaced by clipping object, which also
supports clipping inside or outside a box.
- Cameras now behave more consistent if you attach them to a rotating
transform parent. If the property “fixed up axis” is disabled, they also
perfectly rotate with their parent allowing to view an object always
exactly from the same relative position.
- Removed Camera lookat property. You can still specify a lookat by
connecting the Transform of another object to the new Lookat camera
input slot.
- Input fields for numbers in the Property editor now allow to insert
number in scientific notation (e.g. 1e-05)
- Dialogs now use improved Input fields for numbers similar to the
ones in the property editor (e.g. Bullet-Settings)
- Scrolling the mouse wheel when focusing a spin box or combo box in
the property editor no longer changes the value.
- Changed the “Camera” menu and scene inspector group name to
“Rendering”.
Optimized
- Deleting a lot of keyframes in the keyframe editor at the same time
is now faster.
- Improved the performance of the plot dialog when drawing large
graphs.
- Improved force sensor rendering performance.
Fixed
- Fixed that multiple undo events are created when deleting multiple
keyframes in keyframe editor at the same time.
- PreonLab now throws an error message when trying to load a scene
file with a newer version than the current program-version.
- Fixed Preon Renderer clipping issue.
- Fixed being able to close a connection loop which lead to a crash of
PreonLab.
- Fixed the connection editor not showing connections to a duplicated
object.
- Fixed inconsistent state when continuing an aborted simulation due
to missing disk space. Most previous non-corrupted state is loaded from
disk.
- Fixed issue when keyframing a camera without fixed up axis.
- Fixed crash when calling PreonMesher.meshSequence(start, end) in
PreonLabCLI
- Fixed Preon Renderer issue when hiding scripted particles.
[1.2.3] - 2016-07-05
- Fixed issue that camera matrices were not updated correctly by Preon
Renderer.
- Fixed issue that sleeping particles were not rendered in some
cases.
[1.2.2] - 2016-06-29
Added
- It is now possible to set the zoom of an orthographic camera in the
property editor.
Fixed
- Fixed Preon Renderer clipping plane issue.
- Fixed undo/redo clipping plane issue.
- Fixed force and wetting sensor issue.
- Fixed background image not resetting when creating a new scene.
- Fixed calling “Core.simulateBlocking(start, end)” twice resulting in
wrongly cached particle frames in PreonLabCLI.
- Made scene file saving more robust, for instance if there is not
enough memory.
[1.2.1] - 2016-06-17
Fixed
- Fixed issue that particles emitted by circle or square source were
deleted under rare circumstances.
- Fixed crash when loading scene without solver settings (broken
prscene-file).
[1.2.0] - 2016-06-13
Added
- New alternative boundary handling for Preon Solver.
- Added the possibility to specify a position and velocity scaling
factors when importing airflows from csv files.
- You can now create materials and assign them to rigids and fluids
using the connection editor.
- Added water material allowing realistic water rendering with Preon
renderer.
- Preon renderer now renders sensor planes.
- Added Distance Sensor.
- Added Placement Tool.
- PreonLab now notices when the writing of simulation data to disk
failed (e.g., when the disk is full) and aborts the simulation showing a
warning dialog.
- Added ‘CTRL + H’ hotkey to toggle through the render modes of an
object (allows to make the object invisble/visible very fast).
Optimized
- Improved performance of keyframe editor when displaying a large
number of keyframes.
- When using simulation domains to script fluid particles, the
scripted fluid particles now have less memory and performance impact
than normal fluid particles.
Changed
- Removed the position and orientation offset when importing Adams
data, this can be done via transform groups. Changed start frame to
start time.
- Adams data is now imported as keyframes. This should fix continued
problems with reloading the scene and loosing the animation data.
- Clipping planes now operate now per object and per camera. Only
connected cameras and objects are clipped.
- If twoSidedLighting is off, backface culling is enabled to avoid
lighting artifacts when rendering two-sided geometries.
- Changed the default density of water to 998.2071 (literature value
at 20°C) and drag force air density to 1.2041 (also literature value at
20°C).
- PreonLab now shows a warning dialog when the exporting of CSV data
from the plot dialog fails (e.g., due to missing rights to export to the
provided folder).
- Added switch to connection editor that allows to hide or display
property connections.
- Simulation boundary domains now only delete fluid particles by
default, because deleting rigid particles can hurt performance in some
scenes.
Fixed
- Fixed not being able to scale circle source with the z-axis
dragger.
- Fixed typo in the default name of an AirFlowBox.
- Fixed cropping of simulation data.
- Fixed the scaling speed of when using the scale dragger to be
dependent on the zoom of the camera.
- Changing the up axis in UI settings now also changes the up-axis of
all perspective cameras. This fixes some bugs related to camera movement
and rendering with Preon Renderer.
- Fixed simulation step in the bottom left of the OSD not resetting
when playbacking or jumping in the timeline.
- The plot dialog can now show larger value ranges. This should fix
problems in scenes with large numbers of particles.
- Fixed creation of a keyframe when double-clicking exactly at the
same vertical position as an already existing keyframe.
- Fixed disappearing objects (mainly sources).
- Fixed rain source threading issue.
[1.1.2] - 2016-05-18
Fixed
- Fixed wetting sensor related crash.
- Fixed PreonRenderer related crash.
- PreonRenderer now supports cameras with orthogonal projection.
- Fixed camera controller issue in case the camera has a transform
parent.
[1.1.1] - 2016-04-28
Changed
- Alembic rigid can now be used as transform parent.
Fixed
- Fixed volume sensor not recording statistics in post-processing
mode.
- Fixed crash when deleting PreonRenderer.
- Fixed rare crash in BVH collider.
[1.1.0] - 2016-04-12
Added
- Added Preon Renderer, a raytracer which renders fluid surfaces
directly without meshing
- Added the possibility to specify which parts of the OSD are shown in
recorded frames.
- Improved plot widget: It is now possible to specify x and y range.
Also, it is possible to assign custom colors to plots by clicking on the
color in the list of statistics.
- Renamed Sinks to Boundary Domains which can now also remove
particles of solids, allowing to create holes in geometries.
- Added velocity boundary condition for Boundary Domain.
- Added possibility to specify volume source alignment via IOAlign
slot.
- Added Volume sensor that measures the fluid volume in a orientated
cuboid.
- Preon Solver has now the option to restrict the simulation to two
dimensions.
Changed
- Surface offset is no longer settable for rigid objects. For boxes,
this also means, that the displayed mesh changes and a rigid body
simulation would behave differently. For fluid simulation nothing
changes.
- Extended and renamed sinks to Boundary Domains and Conditions.
- Preon Solver now allows to specify three colors for coloring its
particles.
Fixed
- Keyframes are now also duplicated when duplicating an object.
- Fixed bug which caused transparent areas in recorded frames.
- Fixed seldom occurring bug that sensor plane data cannot be read
from disk.
- Fixed remaining parent transform pick highlight after deleting of
IOTransform connection.
- Fixed issue that some sensors could not be connected via the
IOTransform slot.
- Fixed exclusive range rendering in Preon solver.
- Fixed rare volume source seedpoint filling issue.
- Volume source border size now works correctly for box and cuboid
objects.
- Fixed BVH collider bug that could occur when keyframing a rigid from
active to inactive.
- Fixed occasional warning regarding the reading of a state-file when
the behavior of a continuous source was keyframed.
- Velocity projection and height fields now immediately update their
image if a solver is (dis-)connected.
- Fixed continuous sources sometimes emitting inconsistent particles
after jumping in timeline and re-simulating.
- Fixed being able to single-step beyond the playback/simulation
end-frame.
- Fixed blue simulation indicator bar in timeline always starting from
frame 0, even when simulating from a later frame.
- Fixed fluid particles not being removed when jumping to a frame with
no particle data file.
[1.0.2] - 2016-04-07
Added
- Added post-processing license.
[1.0.1] - 2016-03-02
Fixed
- Force sensor is now only measuring data for connected fluid.
- Recorded images do not have an alpha value anymore. There was a
mismatch between rendered and recorded image due to alpha values.
- Made gradient computation numerically more robust. Prevents
unplausible large accelerations / or unintended particle deletion in
rare cases.
[1.0.0] - 2016-02-22
Added
- Added a “Recent Scenes” menu entry under “File” which allows quick
loading of recently opened scenes.
- Added check on start-up if the current computer fulfills all
requirements for PreonLab.
- Added possibility to duplicate multiple selected objects.
- Added possibility to move multiple selected objects using a
dragger.
- Viscosity model for PREON solver can be set by user.
- Cohesion model for PREON solver can be set by user.
- Added PREON viscosity model which is invariant with respect to
resolution.
- Added PREON cohesion model.
- Added velocity particle killer that kills particles above a
specified velocity magnitude.
Changed
- Improved transparency. It is now possible to specify an opacity
between 0 and 1 for rigid objects, fluid solvers and fluid meshers.
Also, multiple transparent surface layers are now supported. However for
efficiency reasons, the result is still only an approximation of real
transparency.
- Scene file now stores which camera is active and if quadview is
used.
Fixed
- Fixed clean data action not working. Also added clean data action to
PREON Mesher.
- Fixed alembic rigid ignoring its parent transform if present.
- Fixed particles not being rendered when using orthographic cameras
with inverted direction.
- Fixed background image not working.
- Fixed two-sided lighting.
- Fixed killer fields sometimes killing particles during
playback.
- Fixed Recording issues on RHEL6.
Optimized
- Fixed performance issue of BVH collider that occurred after
simulating a few hours.
- Slightly improved performance of BVH collider.
- Fixed memory leak in BVH collider when deleting fluids or
rigids.
- Improved performance of PREON Mesher when generating very big
meshes.