Introduction to Introduction to ANSYS FLUENT

Introduction to Introduction to ANSYS FLUENT

Customer Training Material LtLecture 8 User Defined Functions (UDFs) Introduction to ANSYS FLUENT ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-1 December 2010 FLUENT User Defined Functions Outline Customer Training Material • A brief introduction to FLUENT user-defined functions • Overview of FLUENT data structure and macros • Two examples • Where to get more information and help • UDF support ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-2 December 2010 FLUENT User Defined Functions Introduction Customer Training Material • What is a User Defined Function? – A UDF is a function (programmed by the user) written in C which can be dynamically linked with the FLUENT solver. • Standard C functions – Trigonometric, exponential, control blocks, do-loops, file i/o, etc. • Pre-Defined Macros – Allows access to field variable, material property, and cell geometry data and many utilities • Why program UDFs? – Standard interface cannot be programmed to anticipate all needs: • Customization of boundary conditions, source terms, reaction rates, material properties, etc. • Customization of physical models • User-supplied model equations • Adjust functions (once per iteration) • Execute on Demand functions • So lu tion In itia liza tion ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-3 December 2010 FLUENT User Defined Functions Interpreted vs. Compiled UDFs Customer Training Material • UDFs can either be run compiled or interpreted. – The supported compiler for FLUENT is Microsoft Visual Studio (Standard or Express Editions) • Interpreted code vs. compiled code – Interpreted • C++ Interpreter bundled with FLUENT • Interpreter executes code on a “line by line” basis instantaneously. • Advantage – Does not require a third-party compiler. • Disa dvan tage – ItInterpre ter i s s low, an d canno tdt do some func tions. – Compiled • UDF code is translated once into mmachineachine language (object modules). • Efficient way to run UDFs. • Creates shared libraries which are linked with the rest of the solver. • Does require a compilation step between creating/editing your UDF and using it. ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-4 December 2010 FLUENT User Defined Functions User Access to the FLUENT Solver Customer Training Material Segregated PBCS DBCS User- Initialize Beggpin Loop defined Solver? Solve U-Momentum Source terms ADJUST Solve Mass, Source terms Solve V-Momentum Momentum, User Defined Solve Mass Source terms & Momentum Energy, INITIALIZE Species Solve W-Momentum Repeat Solve Mass Continuity; Update Velocity Exit Loop Check Convergence Solve Energy Update Properties Solve Species Source terms User-Defined Properties Solve Turbulence Equation(s) User-Defined BCs Solve Other Transport Equations as required ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-5 December 2010 FLUENT User Defined Functions Fluent UDF Data Structure (1) Customer Training Material The cell zones and face zones of a model (in the finite-volume scheme) are accessed in UDFs as Thread data types Thread is a FLUENT-defined data type Domain Domain Cell Cell Face Thread Thread Boun dary (face threa d or zone ) Flu id (ce ll thread or zone) Cells Faces In order to access data in a thread (zone), we need to provide the correct thread pointer, and use FLUENT provided looping macros to access each member (cell or face) in that thread. ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-6 December 2010 FLUENT User Defined Functions Fluent UDF Data Structure (2) Customer Training Material •cell_t declares an integer data type used to identify cells •face_t declares an integer data type used to identify faces Type Variable Meaning of the declaration Domain *d; d is a pointer to domain thread Thread *t; t is a pointer to thread cellcell_t t c; c is cell thread variable face_t f; f is a face thread variable Node *node; node is a pointer to a node. Fluid cell-thread Boundary face-thread (control-volume ensemble) (boundary-face ensemble) Nodes Internal face-thread (internal-face ensemble) associated with cell-threads ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-7 December 2010 FLUENT User Defined Functions Loop Macros in UDF Customer Training Material • Several frequently used loop macros: – Loop over all cell threads in domain d: thread_loop_c(ct,d) { } – Loop over face threads in domain d: thread_loop_f(ft,d) { } d: a domain pointer ct, t: a cell thread pointer – Loop over all cells in a cell thread t: ft,f_thread: a face thread begin_c_loop(c, t) pointer {}{…} c: a cell thread variable end_c_loop (c,t) f: a face thread variable – Loop ov er f aces in a f ace thr ead ft_thr ead: begin_f_loop(f, f_thread) { … } end_f_loop(f, f_thread) ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-8 December 2010 FLUENT User Defined Functions Example – Parabolic Inlet Velocity Profile Customer Training Material • We would like to impose a parabolic inlet velocity to the 2D elbow shown. • The x velocity is to be specified as • We need to know the centroids of the iltfinlet faces v ia a macro, an d ano ther macro to perform the boundary condition assignment. ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-9 December 2010 FLUENT User Defined Functions Step 1 – Prepare the Source Code Customer Training Material • The DEFINE_PROFILE macro allows the Header file “udf.h” must be included at the top function x_velocity to be defined. of the program by the #include command – All UDFs begin with a DEFINE_ #include "udf.h" macro DEFINEDEFINE_PROFILE( PROFILE(xx_velocity velocity,thread , nv) – x_velocity will appear in the { solver GUI float x[3]; /* an array for the – thread and nv are arguments of coordinates */ the macro, DEFINE_PROFILE float y; which are used to identify the zone and variable being defined, face_t f; /* f is a face respectively thread index */ – The macro begin_f_loop loops over all faces f, poitdbthinted by threa d beginbegin_f_loop f loop(f, thread) { • The F_CENTROID macro assigns cell position vector to F_CENTROID(x,f,thread); x[] y = x[1]; • The F_ PROFILE macro applies the FF_PROFILE(f, PROFILE(f, thread, nv) velocity component to face f = 20.*(1.- • The code is stored as a text file y*y/(.0745*.0745)); inlet_bc.c } endend_f_loop f loop(f, thread) } ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-10 December 2010 FLUENT User Defined Functions Step 2 – Interpret or Compile the UDF Customer Training Material • Compiled UDF • Interpreted UDF Define User-Defined Functions Compiled Define User-Defined Functions Interpreted • Add the UDF source code to the Source • Add the UDF source code to the Source Files list File Name list. • Click Build to compile and link the code • Click Interpret • If no errors, click Load to load the library • The assembly language code will display in • You can also unload a library if needed. the FLUENT console /define/user-defined/functions/manage • Click Close if there is no error ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-11 December 2010 FLUENT User Defined Functions Step 3 – Hook the UDF in FLUENT GUI Customer Training Material • Open the boundary condition panel for the surface to which you would like to apply the UDF • Switch from Constant to udf x_velocity in the drop-down list. • The macro name is the first argument of DEFINE_ PROFILE in the UDF code ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-12 December 2010 FLUENT User Defined Functions Step 4 – Run the Calculations Customer Training Material • You can change the Profile Update Interval in the Run Calculation panel (default value is 1). – This setting controls how often (either iterations or time steps if unsteady) the UDF profile is updated. • Run the calculation as usual. ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-13 December 2010 FLUENT User Defined Functions Numerical Solution of the Example Customer Training Material • The figure on the left shows the velocity field through the 2D elbow. • The figure on the right shows the velocity vectors at the inlet. Notice the imposed parabolic velocity profile. ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-14 December 2010 FLUENT User Defined Functions Other UDF Hooks Customer Training Material • In addition to defining boundary values, source terms, and material properties, UDFs can be used for: – Initialization • Executes once per initialization. – Solution adjustment • Executes every iteration. – Wall heat flux • Defines fluid-side diffusive and radiative wall heat fluxes in terms of heat transfer coefficients – User-defined surface and volumetric reactions – Read/write to/from case and data files • Read order and write order must be same. – EtExecute-on-Deman d capa bility • Does not participate in the solver iterations • They are hooked into the solver using the User-Defined Function Hooks panel: Define > User Defined > Function Hooks ANSYS, Inc. Proprietary Release 13.0 © 2010 ANSYS, Inc. All rights reserved. L8-15 December 2010 FLUENT User Defined Functions Example 2 – Custom Initialization Customer Training Material • Initialize: #include "udf.h“ – A temperature of 600 K DEFINE_INIT(my_init_function, domain) – inside a sphere, with its center at { (0. 5, 0. 5, 0. 5), cellcell_t t c; – radius of 0.25, Thread *ct; real xc[ND_ND]; – and 300 K throughout the rest of the thread_loop_c(ct,domain) domain. { begin_c_loop (c,ct) • The domain pointer is passed to this { UDF through the argument C_CENTROID(xc,c,ct); if (sqrt(ND_SUM(pow(xc[0]-0.5,2.), pow(xc[1] - 052)0.5,2.), • thread_loop_c macro is used to pow(xc[2] - 0.5,2.))) < 0.25) access all cell threads (zones), and C_T(c,ct) = 600.; begin_c_loop macro is used to else C_(T(c,ct)); = 300.; access cells w ithin eac h ce ll threa d } end_c_loop (c,ct) • Deploy this UDF as a user defined } function hook .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    23 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us