Prepare cube tool for a skybox

Here is a very short script that prepares the cube tool to make a skybox. Just change the numbers in the first 2 lines and go. Then create the skybox manually.

skbox_size=1000
skbox_center=[0,0,0]
ensight.tools.box(“ON”)
ensight.view_transf.function(“box”)
ensight.view_transf.box_length(skbox_size,skbox_size,skbox_size)
ensight.view_transf.box_origin(-skbox_size/2+skbox_center[0],-skbox_size/2+skbox_center[1],-skbox_size/2+skbox_center[2])
ensight.view.highlight_parts(“OFF”)
ensight.tools.box(“OFF”)

Moving car animation

This script assists in creating an animation with frame mode. It makes the car appear to move and wheel spin at a rate that matches the car’s speed. It can do constant speed as well as constant acceleration and deceleration.

First create 3 frames (ground and background, front wheels, rear wheels) and assign them to the parts. Then adjust the settings at the beginning of the script. The car will stay stationary while the ground moves in the opposite direction to give the appearance of motion.

Download: drive_car.py

Transient animation update palette range

Problem statement: EnSight has an option for setting the variable palette range to what is visible in a given viewport or to selected parts. However there is no option to update to these ranges automatically when time changes.

Value proposition: These are two scripts for updating the palette range automatically. One script adds a time callback, but this is only called when changing solution time in the GUI. It is not called for transient flipbooks, keyframes, or when saving a solution time animation. So the other script uses EnVe to save a solution time animation. Neither script works with flipbook or keyframe.

Script 1: Time callback update palette range

This works by remembering the selected parts when the script is run and using their min/max range. If the variable used to color the first part (of the selected parts) is changed then the new variable will update instead of the old one. You can add multiple independent callbacks by running the script again (each run creates a new instance of the class). The user should not need to edit the script, just select parts and run. There is some output in the python tab.

Download: time_callback_update_palette_range.zip

Script 2: Transient update palette

A very basic script that creates a single transient movie. All the settings are near the beginning of the script. Only a few lines of code update the palette range, and these could easily be changed to perform different actions every time step. So this is also a template for saving any transient animation with changes each time step.

Download: transient_update_palette.zip

Calculate percent volume/area/length

For users who want to calculate the % or fraction of a part which has variable values within a certain range. This is fairly easy to do manually in EnSight but requires some knowledge and can give false answers if parent parts have mixed dimensions. This routine automates the steps:

  1. create an isovolume
  2. calculate the volume, area, or length of the isovolume and parent part(s)
  3. divide the isovolume by parent to get fraction (x100 for %)

In addition to automating, the script also checks for the existence of mixed element dimensions in the selected parts. If there is more than one dimensionality (1D, 2D, 3D) of elements then the script aborts. If only one type exists then the script chooses the correct calculator function for that dimension and names the constant variables accordingly.

The options are set by 3 variables at the beginning of the script. Just variable, isovolume by high/low/band, and the iso values. Multiple values can be specified to create multiple isos.

This is really just the bare beginnings and there is certainly a lot more that can be done. GUI, error reporting, creating annotations, more options, command language, extension class.

After you have run this script you will have a Vol_percent_1 variable which represents the isovolume fraction % of total.  Now select the isovolume part and double click on the Tools icon at the top, and go into the Analyze folder and run the Part Constant Query tool. Choose the Vol_percent_1 constant variable.  Now you have a nice plot from sweeping the max isovolume from min to max.

Vol_vs_var

 

Download script: percent_area.zip

Logo annotation helper

Problem statement: Most EnSight graphics and annotations will resize automatically with the graphics window or output image size, however, the logo annotation does not. Also, the location of the logo is fixed by the bottom-left corner, which means it won’t stay fixed in the upper-right corner when the resolution changes.

Value proposition: This tools makes it easy to set the logo size, aspect ratio, and location in ways useful for image and animation output.

The current state of this python is a script with a simple GUI. It is unfinished but in a usable state and lacking documentation. The GUI options are a bit long and confusing at first.

Download the script: logo_helper.zip

Texture mapping tool

This code enables a very simple and handy way of texture mapping. The code can handle pre-selected (multiple) parts or the user can select a single part within the script GUI. Additionally the mapping direction and the texture image must be chosen. Now click “Create” and the code will automatically grab the dimension of all selected parts and map the texture over the whole part surface. The GUI remains open so the user can rotate the plane tool for adjusting the texture.

http://pythonexchange.com/?attachment_id=816

Continue reading

Quick save a plot as an image

This simple script provides a fast way to save a singular plot as an image, with no other objects from the graphics window visible.

It provides a few options that need to be edited in the file (notably the image save path) and a few other options that are specified in a pop-up window. I think usage is fairly straight forward. If this script is used often, one will probably want to remove the pop-up window and set the options to the desired defaults inside the script. The script should work regardless of whatever else is visible in the graphics window, and should restore the view to it’s original state after running. Multiple viewports are supported, but the script may fail if the maximum allowed 16 viewports exit.

The saved images will be named after the Plot name. In a duplicate filename exists the new name will be modified (existing images will not be overwritten).

Added a toggle in the GUI to allow toggling the background color automatically using EnSight.

Download the script image_plot2.py (updated April 23, 2014)

Gradient textures for coloring with two variables

EnSight has the ability to color a single part by 2 different variables by using a bitmap texture. Each axis of the texture is assigned to one variable. A sample image is included with EnSight (dual_gradient.png in the cube data directory) which has one axis as color and the other axis as transparency. Sometimes the user may want to use different colors for each axis instead of transparency, but this requires having the texture to use.

This script uses EnVe to create a custom image for this purpose, by letting the user define the colors of the 4 corners of a 256×256 square, and interpolating the color values between them. It is a barebones script with little documentation, but is also short and simple to use. In this post is also an archive with a few images created with the script.

Images: gradient_textures.zip

Script: make_image_4_color_square.py

Below is a screenshot of the textures dialog, with the settings changed to the optimal settings for using gradient textures (in most cases).

Texture Mode: Decal or Replace

Repeat Mode: Clamp or Clamp to Texture

Interpolation: Nearest

Compute Texture Coordinates by: Variables

S Variable and T Variable: select 2 scalar variables. Ideally the range of these variables are between 0 and 1. Read the How To manual for more information.

Note that if your variable values var1 + var2 <= 1 (for example mass, volume, or mole fraction) then you will only use the bottom-left triangle half of the square.

 

STAR-CCM+ Particle Track File Conversion into EnSight 10

** Updated 01-May-2014: Users of EnSight 10.1 will have version2.3 of this tool automatically installed in the UserDefinedTools — > File Import/Export section. **

Users of STAR-CCM+ who are also using the lagrangian or discrete element modeling capability, there is a new translation utility from CEI to convert the STAR-CCM+ based particle track file into EnSight’s Measured Data format, to visualize and analyze within EnSight.

This translation routine takes an existing EnSight Case Format files (the continuous domain) exported from STAR-CCM+, along with the STAR-CCM+ based Particle Track files (.trk). The routine converts the .trk file contents onto a single timeline, creates the appropriate EnSight Measured Data files (in a “trk_mea_files” directory), and modifies the EnSight Case file to include the appropriate references for the Measured Data Files. Once loaded, the user can visualize, analyze, and communicate the information contained within both the lagrangian/discrete phase along with the continuous phase.

To utilize this new translation routine, please follow the instructions below:

1. Download the .zip file containing the new translator. Unzip. To make this available to all users on your installation, place the “ccm_trk_ensext” directory into your installation Tools sub directory as follows:

$CEI_HOME/ensight100/site_preferences/extensions/user_defined/Tools

(Please ensure that you have proper write privileges to place this directory here).

Now start up EnSight as follows (example assumes you are running EnSight 10.0)

ensight100 -no_prefs

OR

for personal use, install into your local Tools directory as described in the How To Manual (in HOW TO PRODUCE CUSTOMIZED ACCESS TO TOOLS & FEATURES)

Local directory – python files for your own personal use

Linux: ~/.ensight100/extensions/user_defined/Tools

Mac: ~/Library/Application Support/EnSight100/extensions/user_defined/Tools Windows

Vista, Windows 7: C:\Users\username\.ensight100\extensions\user_defined\Tools

Windows XP: %HOMEDRIVE%%HOMEPATH%\(username)\.ensight100\extensions\user_defined\Tools

To find out your %HOMEDRIVE%%HOMEPATH% do Help>Online Support, click the System Into tab, and look at the Prefs Dir. This is where EnSight looks for user defined tools.

If you don’t see your tool, try

ensight100 -no_prefs

Download version 2.3 of STAR-CCM+ Track File Conversion Tool Here

2. Start EnSight 10. You should notice a new tool under the “UserDefinedTools — > File Import/Export” denoting STAR-CCM+ .trk file translation:

3. Ensure that you have exported the continuous domain from STAR-CCM+ into EnSight format.

4. Double click the “STAR-CCM+ .trk import” tool from the UserDefinedTools area.

4a. Specify the EnSight Case format “.case” file. (Exported from STAR-CCM+)

4b. Specify the STAR-CCM+ Particle/Discrete Element file (.trk)

4c. Specify the number of timesteps to re-sample the particle track information into.

4d. Specify Time option for conversion of the Particles. The Default of “Max Trace” will resample all of the particles based on the min and max time of all the particles.  If you choose “User Specified”, then please specify the minimum and maximum times in section 4e (below). Use this option if you have rogue particles which may “hang around” for long periods of time, or you want to specifically control the time period over which the particles are converted.

4e. If you choose the “User Specified” Time option, then provide the minimum and maximum time.

4f. Toggle to keep particles at their last known location if the time is greater than defined for that particle. Particularly useful to “stick” particle where they exit the domain.

5. Click on the “Convert” button to convert the STAR-CCM+ based Track File into EnSight Measured data.

You will see a progress bar indicating the progress through the process of reading, re-sampling, and writing out the new EnSight Measured data. Two new items are written in the same directory : “trk_mea_files” directory containing the EnSight format Measured Data, and a modified .case file “<original_name>_particles.case”

Once complete, you will get a “Done” Dialog, after which the new case file will be automatically loaded in. You can now change the visible aspects of the Measured Data via the “Node Display” icon :

Since the Translation routine writes new Measured Data files, subsequent loading of this case with Measured data, the user can simply specify to load the “_particles.case” file directly, without the need to re-translate the Particle Track information each time.

Should you have any questions, please do not hesitate to contact CEI (support@ceisoftware.com) with questions, comments, praise.

Example Dataset:

An example STAR-CCM+ based dataset containing Particle track information can be downloaded here.

 

Video Tutorial:

To further assist your use of STAR-CCM+ Particles in EnSight, please consult this video tutorial here:

http://www.ceisoftware.com/wp-content/uploads/screencasts/star_ccm_plus_trackfiles/star_ccm_plus_trackfiles.html

 

 

Users of STAR-CD v3.x and v4.x:

Note: This routine mentioned here is meant to work for the specific “STAR-CCM+” based track file format, which is different to that of STAR-CD (v3.x and v4.x) particle track routines. If you are trying to convert “STAR-CD” based particle track files, please see our existing “f33toparticle” conversion routine.

http://ceisoftware.zendesk.com/entries/23238017-STAR-CD-Droplet-Lagrangian-Particles-to-EnSight-

http://video.ceisoftware.com/media/starcd_trackfile

Revision History

** Version 2.3:  Updated 01-May-2014 for mint & maxt calculation, as well as sorting trks based on time prior to re-sampling/interpolation. **

Creating Custom Color Palette from Image

Suppose you have an image that was created in another package, and you would like to replicate the color palette used in the image within EnSight? Well, EnSight can easily accept custom Color Palettes (see UserManual). The only “tough” part is getting from original image file the RGB values used and into a form of the EnSight Color Palette (.cpal) file. Well, guess what, Python (and more specifically EnVe) can be used to grab out the color legend information, and create your own color palette file (.cpal) for EnSight.

So, how you go about doing this:

1. Start with an image created in another package, which has a color legend. Crop the image to just the color legend palette. You now have an image file which has (in this example) a vertical specification of the color palette.

2. Use the attached python routine below on this file image file. This python routine uses EnVe to query the image file for the RGB values of the pixels in the image, and grab those values off, and write out an EnSight Color Palette file (.cpal) with the appropriate information in it. (If your image has a horizontal legend, then you can switch the x,y values around to perform the same operation).

3. You can thus create a new EnSight Color Palette File (.cpal) from the original image created in another package. EnSight has a limit of 21 bands, but handles 16 colors per band for smooth palette range.

 

As always, please contact us here at CEI should you have any questions, comments, having trouble, or would like routines this customized to your needs. We are here to help.

Click here for Color Palette Create Tool