Showing results for 
Search instead for 
Do you mean 

Temperature mapping a 2D field onto a cylindrical 3D model

by Community Manager Community Manager ‎04-17-2015 12:00 PM - edited ‎11-19-2016 12:04 AM

Symptoms

 

We have a user who has a model with a 2D temperature field and a want to map it to a 3D model but his 3D model is a cylindrical. He wanted to know how he could map it with 2D field and have a "radial" mapping.

 

Diagnosis

Mapped2Dto3DTemperatures.jpg

 

Here was what our support genius Mark suggested:

 

See the attached image. It shows temperature results in a 2D solve, and those temperature results mapped onto a 3D model as a temperature load. I did this by writing the 2D results to a table based field. Then I created a formula based field for the 3D temperature load based upon the 2D table based field. The formula allows R and Z to vary, but constrains THETA to be 0.0 regardless of the actual THETA value in the 3D model. Basically, it is a revolve of the 2D temperatures, but applied only where 3D geometry exists.

 

In NX 10 I created a formula using the NX expressions capabilities to apply the 2D data to the 3D model. 

Solution

Turns out this is exactly what the user wanted, however Mark added detailed steps on how to do this. There were two different methods, one which was quicker using new capabilites in NX 10 and a second, a bit more involved, in NX9:

 

 

This is likely more information than you need, but I wanted to tell a complete story. I assume you already have results data in an axisymmetric or cylindrical form and need to apply it accordingly. This outline starts as if you are generating that data from NX post processing.

 

------------------

 

NX 9 conversion of 2D axisymmetric temperature results to a 3D revolved temperature load

------------------

 

This method describes how to use NX 9 and previous versions to generate 3D temperature loads from 2D axisymmetric results. It uses post processing and fields capabilities.

 

In my example I have 2D data defined in the absolute XY plane. X is the axis of rotation. Therefore, from a cylindrical sense, my data has:

 

Absolute X representing Local Z

Absolute Y representing Local R

Absolute Z representing Local Theta

 

Spatial fields output from NX post processing currently are only in terms of the Absolute Cartesian system. Now for the procedure.

 

  1. Open the 2D SIM
  2. Open the 3D SIM in the same session
  3. Create a post processing contour plot of the 2D temperatures
  4. Create a field from the results as Cartesian/Temperature independent/dependent domains
    1. Note the above mapping of my data to the desired cylindrical system
    2. A field is created in the active file, which should be the 3D SIM
    3. Name the field “Test”

 

The next step involves transposing spreadsheet columns to be of the form R, THETA, Z as opposed to Z, R, THETA. There are a number of ways to do this.

 

  1. Edit the field and open it in Excel
  2. Edit the XYZ columns appropriately to get the data in R, THETA, Z form
  3. Save the Excel sheet and exit with or without accepting changes to the field. The key here was to use Excel to get the coordinate locations in the proper cylindrical columns for a local cylindrical CSYS.

 

Now create a new spatial table field from the saved Excel data.

 

  1. Create a spatial table field named “TestCylindrical”
  2. Independent: cylindrical
  3. Dependent: Temperature
  4. Spatial Map: Create a local cylindrical CSYS or select an existing one
  5. Connect to Excel and copy the saved data from step 7 into this field’s data

 

You have a cylindrical spatial field, but all the THETA values are essentially null. You really still have just 2D data. The next step creates a formula field that uses the cylindrical spatial field’s data for all THETA.

 

  1. Create a formula spatial field named “TestCylindricalFormula”
  2. Independent: Cylindrical
  3. Dependent: Temperature
  4. Spatial Map: Select the same CSYS from step 11
  5. Define the formula as:

 

ug_fieldVarAt("TestCylindrical","temperature",ug_var("radius"),0,ug_var("z"))

 

The function ug_fieldVarAt evaluates TestCylindrical for temperature as the dependent variable. It uses the current model’s R and Z locations, while always evaluating TestCylindrical at THETA=0 regardless of the current value of THETA. This effectively rotates the 2D data about the Z axis of the cylindrical system to create the 3D field. The final step is to create a temperature load that varies spatially. When defining the load, select field TestCylindricalFormula.

 

Here is the process in NX10

 

NX 10 simplifies this process.

 

  1. We are able to specify in post that the results are axisymmetric and the axis of rotation is the X axis. So when exporting a field in step 4, you get a Cartesian field that already has the columns matching a cylindrical system (X maps to R, Y maps to THETA, Z maps to Z)
  2. It supports an axisymmetric plane independent domain spatial field
  3. It supports a new function, fd() that lets you more easily use fields in expressions. In this example it replaces the ug_fieldvarAt() function above. For example, the expression in NX 10 for the axisymmetric plane field would be something like fd("Test", radius, 0.0, z). Then use that field to define a load on the bodies/nodes of the 3D model.  

NX 10 reduces the process down to defining a field from post processing, and then using that field to define an axisymmetric plane formula field. When evaluating the axisymmetric plane field in the 3D model's temperature load, it produces revolved results since results are independent of THETA.

 

Here is a video that illustrates these steps in NX 10: