This Model of the Month focuses on a modeling development process using the supplemental TDFUtility program (supplied with all software from ThermoAnalytics), rather than on a specific application of thermal analysis.
The TDFUtility is a set of utilities combined into a single executable. Each utility is organized into tabs. We focus this month on the GEOMETRY tab of the TDFUtility, and demonstrate how it can be used to improve the mesh and model quality of a simple exhaust-shield component model.
We begin our workflow by creating our surfaces in CAD software, in this case Rhino3D software, available for download and free evaluation (www.rhino3d.com). Rhino's meshing tools are primarily set up to generate high-quality rendering meshes, but can also be utilized to generate meshes for thermal analysis. As such, Rhino is a very low-cost means of generating "good" quality base surface meshes. We will use the TDFUtility program to improve and adapt the original Rhino mesh.
We begin by selecting our meshes in Rhino and exporting them in Wavefront OBJ file format. This OBJ file is opened directly into our RadTherm or WinTherm software. Although our software can open native Rhino3D 1.X file formats, the current release of Rhino3D (3.0) cannot save files to the 1.X format. Before we make changes in TDFUtility, we check the conduction in RadTherm using the "Display Free Edges" setting from the View menu. This highlights breaks in mesh conduction in the model geometry. We move to the Geometry Tab>Edit and choose condense. The condense function welds these free edges together. See screen shots below.
After condensing, the file is saved in our native *.TDF file format. We then open the TDFUtilty program from the RadTherm menu in Windows OS. For Linux or UNIX systems, the TDFUtility executable is stored in the "utils" subdirectory under the RadTherm installation directory. After starting TDFUtility, we click on the GEOMETRY tab. This tab can be used to modify existing meshes in *.TDF files:
The workflow when using the GEOMETRY tab is to open an exisiting TDF file as the input file. Then click the "..." button next to Output File to specify a NEW TDF file that will have been modified by the operation of the Quad to Tri. We choose to simply change the "REV" number on the file. Note that we limit the warpage to 1 degree, thus allowing only quads that are within one degree of "perfectly planar" to exist in the model. We can choose to perform this operation on selected parts, or all parts.
Tri to Quad converts pairs of planan Tri elements to Quads. Quad-to-Tri splits warped quad elements into 2 Tri elements. Because the Rhino meshing tool can often create non-planar quads, we will first use the Tri to Quad function to split up those warped quads.
We then open the new file in RadTherm and take note of the changed geometry. NOTE: the original "bad" geometry is stored in a new part called "DELETE THIS PART." You can select this part to highlight and view what elements have been removed (more accurately, what elements will be removed when you delete that part). After examining the elements to be removed, make sure that "Delete This Part" is selected and click Delete Part in the Editor tab of RadTherm. Click yes when prompted to delete the geometry also.
Our geometry now appears without the warped quad elements. But we still have a few items to correct—many extra tris are sometimes created at seams. We will use the tri-to-quad function to merge planar tris into quad elements. Quad elements yield faster, more accurate thermal solutions, and so we try to produce a quad-dominant mesh for our analyses.
After deleting the unwanted geometry, we save this file (...rev-2.tdf), return to TDFUtility, and select the Tri to Quad function. The Tri to Quad function will merge coplanar tri elements into quads for a faster solution and better conduction paths.
We now set version 2 as our INPUT file and create a new entry for our output file (...rev-3.tdf). Again selecting all parts, we click on Calculate to perform the operation and store the new mesh in the (...rev-3.tdf) output file.
Returning to RadTherm, we open the output file and again check out "Delete This Part." We see which pairs of Tri elements have been merged; delete this part and save (...rev-3.tdf).
Satisfied that we have planar quads and tri elements only where needed, we set up boundary conditions for the model. We will not go into detail about the model setup, since our focus is on the TDFUtility. However, we summarize the model boundary conditions as follows: the heat source is the formed steel pipe set up as an assigned/interpolated part type. Our first few runs will be steady state, so we interpolate between the fixed values of 500°C at the inlet and 400°C at the outlet.
Our final run will be a transient analysis using curves for the interpolated elements, which in practice could be thermocouple data. We split our fluid tank into 2 parts—the bottom connected to a water node and an air node in the upper zone—representing a partially filled fuel tank. The heat shield is a simple steel heat shield and the floor pan above uses a 3 Layer part type to represent the steel, insulation, and carpet layers. All external surfaces are connected to open air convection at 20°C.
We run our model and examine the results—they appear as expected, but since our mesh density is rather low, our temperature gradients are not as smooth as desired. We save our model and return once more to the TDFUtility to perform an adaptive refinement of the mesh, based on these initial results.
We set this file (...rev-3.tdf) as our input and specify a new output file (...rev-4.tdf). We select Refine based on Temperature and select all parts. We expand our boundary by 1 element. Since this routine is based on the gradient values in a file, it can be used to refine based on specific time steps of a transient run, or all time steps. In our first case, we have only a single set of steady state results. Thus we select "update" under time steps and select our single set of results. Setting the maximum change to 5 we subdivide high gradient areas of the mesh enough times to predict a maximum change of 5 degrees across any two adjacent elements. We click Calculate to perform the operation and save the results to our output file (...rev-4.tdf).
We return to RadTherm, open the new file, and examine the Delete This Part part to see where our changes have been made. We can "hide" the bad geometry using the Hide and Show buttons on the quick menu bar. When we are satisfied with the changes, we click Delete Part to remove the old, coarse geometry, leaving us with the refined version.
Since the interpolated part type uses conduction rules to determine its temperature distribution, the elements were renumbered and need to be reassigned. Had we been wiser, we would not have selected the pipe when we performed the refine. We learn by doing.
Our interpolated elements reassigned, we run the model again, generating smoother results.
With our geometry optimized for the maximum gradients we expect to encounter, we now create curves for our temperature inputs and run the model as a transient analysis over 15 minutes. By refining and optimizing our meshes early in the modeling workflow, our results will be improved and our results can, under some circumstances, be more accurate.
The TDFUtility offers several other useful functions, and we encourage all users of RadTherm, WinTherm, and MuSES to explore its many benefits. If you have questions about the TDFUtility, please contact us.