# CFX-Post Macros

 Register Blogs Members List Search Today's Posts Mark Forums Read

 July 17, 2006, 14:09 CFX-Post Macros #1 Felix Guest   Posts: n/a Hi everyone, Many of you are probably familiar with the use of macros to post-process CFX results and I need a little help to get me started. I have little experience with CFX but I'm slowly improving my skills! I'm actually trying to use the "Solution variables" available in CFX-Post but I don't understand how to do it properly. To give you and idea, I've written a small macro to calculate the Reynolds number. The 6th line from the end starting with "!Reynolds =..." isn't working since the variables "Density" and "Dynamic Viscosity" are not recognized. Anyone know how I should do it? I would prefer not to create another user scalar variable since it wouldn't work for all the things I want to evaluate! Also, if you know where I could find good documentation on macros it would be of great help. Thanks a lot to you all! Felix _______________________________________ # Macro GUI begin # macro name = Reynolds tests # macro subroutine = losses # macro report file = losses.dat # macro parameter = Diameter [m] # type = float # default = 0.383 # Macro GUI end >variables Boundary Values = Conservative # Macro in pearl ! sub losses { ! (\$dia)=@_; USER SCALAR VARIABLE:Rvar Recipe = Expression Expression = sqrt(x^2+y^2) User Units = m END USER SCALAR VARIABLE:ThetaVar Recipe = Expression Expression = atan2(y,x) User Units = END USER SCALAR VARIABLE:Vr Recipe = Expression Expression = Velocity u*cos(ThetaVar)+Velocity v*sin (ThetaVar) User Units = END USER SCALAR VARIABLE:Vm Recipe = Expression Expression = sqrt(Vr*Vr + Velocity w * Velocity w) User Units = END ! \$Reynolds = \$Density * ave("Vm", "Inlet") * \$dia / \$Dynamic Viscosity; ! open (MYFILE, ">Reynolds.dat"); ! print MYFILE "Reynolds number:\t\t\$Reynolds\n"; ! print MYFILE "\n"; ! close (MYFILE); ! } # end subroutine

 July 18, 2006, 08:28 Re: CFX-Post Macros - Problem solved #2 Felix Guest   Posts: n/a Hi there, I thought of something this morning and it seems like I've solved my problem. It might help someone to know how to do it. Although the variables "Density" and "Dynamic Viscosity" are constant in my problem, I do have to define where to evaluate them. So the problematic line should be written as follow (or in a similar way): ! \$Reynolds = ave("Density", "Inlet") * ave("Vm", "Inlet") * \$dia / ave("Dynamic Viscosity", "Inlet") ; I hope it will help someone! And again, if you know where I could find good documentation on macros, just let me know! Thanks Felix shahid nadeem likes this.

 July 18, 2006, 08:32 Re: CFX-Post Macros #3 Robin Guest   Posts: n/a Hi Felix, I think you have misunderstood how Perl interacts with Post. You should do all of your calculations in CEL, then use the evaluate() function to get the results of expression. Post variables are not otherwise available to the Perl interpreter as variables. Also, your expression should include call backs at specific locations to return a single value, as opposed to a variable. To write this as an expression, then use the 'evaluate()' function to get the value of your expression do the following : EXPRESSIONS: Reynolds Number = massFlowAve(Density)@Inlet * massFlowAve(Vm)@Inlet * \$dia / massFlowAve(Dynamic Viscosity)@Inlet END !(\$ReynoldsNumber, \$ReynoldsNumber_units)=evaluate('Reynolds Number'); Note that you could also calculate your hydraulic diameter as: InletDiameter = sqrt(4*area()@Inlet/pi) The other way Perl and Post interact is that the Perl interpreter will evaluate Perl scalars (which may be numbers or strings) before sending CCL to Post Engine. As a simple example, here is how you could make the averaging type an option in your macro. Add a header for the option: # macro parameter = Averaging type # type = list # list = massFlowAve, areaAve, ave # default = massFlowAve ... Dumpt this to the appropriate Perl variable, say \$aveType, then write your expressions as: EXPRESSIONS: Reynolds Number = \$aveType(Density)@Inlet * \$aveType(Vm)@Inlet * \$dia / \$aveType(Dynamic Viscosity)@Inlet END In the above example, the Perl interpreter will replace \$aveType with the string entered above before processing the expression in the engine. This is a simple example, but it should demonstrate how Post and Perl interact. Note that you should rarely use 'ave' as this is a simple arithmetic average of the nodal values. It is generally better to use mass or area weighted averaging. Which to use when is another topic. Regards, Robin

 July 18, 2006, 08:35 Re: CFX-Post Macros - Problem solved #4 Robin Guest   Posts: n/a Hi Felix, I don't recommend doing it this way, althoug it will work. For more info on macros, have a look at the Tech Tips on the CFX Community Site. There is a very good tech tip from a few years ago name "Creating CFX Pist Macros" at http://www-waterloo.ansys.com/commun...A-AF758934B6D1. You should find this useful. Regards, Robin

 July 18, 2006, 09:32 Re: CFX-Post Macros #5 Felix Guest   Posts: n/a Hi Robin, Thanks a lot for your tips, I truly appreciate. I actually am working with an existing macro and trying to add a few components on it and you're absolutely right, the interaction between Perl and Post isn't completely clear for me. I will try your way of programming the macro right away but can you tell me why you don't recommend doing it my way? Thanks again, Felix

 July 18, 2006, 10:38 Re: CFX-Post Macros #6 Robin Guest   Posts: n/a Hi Felix, If you write it as an expression, it will be available in Post as well. Also, it's generally easier to write the CEL expressions in Post. Regards, Robin

 September 29, 2010, 00:31 #7 New Member   hoaiphuong Join Date: Sep 2010 Posts: 8 Rep Power: 8 Hi everyone! Please help me I have a problem with this code : LIBRARY: CEL: EXPRESSIONS: S = 0.0815 [m] n = 6000 tStep = 0.005 [s] tTotal = 10 [s] Vinlet = (S/2) * (n*pi/30) * (sin(n*pi*t/30) + 0.5 * (1/3.2) * sin(n*pi*t/15 )) END END END But it did not work and have a error " ERROR The dimensions of the argument to function 'sin' are inconsistent with expected dimensions. Argument dimensions resolve to 's'; expected 'rad'. " Thank you very much in advance !

 September 29, 2010, 02:37 #8 Senior Member   Lance Join Date: Mar 2009 Posts: 595 Rep Power: 12 I answered your question in another post, please only post your question in one thread. Make the sin function dimensionless: sin(n*pi*t/30[s]), otherwise the argument dimension will resolve to [s] instead of [rad], just as the error message says.

 September 29, 2010, 03:01 #9 New Member   hoaiphuong Join Date: Sep 2010 Posts: 8 Rep Power: 8 I see... I got it ! Thank you ver much

 September 30, 2010, 02:42 #10 New Member   hoaiphuong Join Date: Sep 2010 Posts: 8 Rep Power: 8 Hi Lance ! Please help me ! I am simulating for venturi tube But I don't know my simualtion setting is right or not ??? Escpecially in setting Solver Manager - Transient model ! Here is Command Editor : " &replace FLOW: Flow Analysis 1 ANALYSIS TYPE: Option = Transient EXTERNAL SOLVER COUPLING: Option = None END INITIAL TIME: Option = Automatic with Value Time = 0 [s] END TIME DURATION: Option = Time per run Time per run = 500 [s] END TIME STEPS: Option = Timesteps Timesteps = 1e-005 [s] END END DOMAIN: Default Coord Frame = Coord 0 Domain Type = Fluid Location = part_1 BOUNDARY: Default Default Boundary Type = WALL Create Other Side = Off Interface Boundary = Off Location = wall part_1 BOUNDARY CONDITIONS: HEAT TRANSFER: Option = Adiabatic END MASS AND MOMENTUM: Option = No Slip Wall END WALL ROUGHNESS: Option = Smooth Wall END END END BOUNDARY: Inlet Boundary Type = INLET Interface Boundary = Off Location = inlet BOUNDARY CONDITIONS: FLOW REGIME: Option = Subsonic END HEAT TRANSFER: Option = Static Temperature Static Temperature = 298 [K] END MASS AND MOMENTUM: Normal Speed = Vinlet Option = Normal Speed END TURBULENCE: Option = Medium Intensity and Eddy Viscosity Ratio END END END BOUNDARY: Outlet Boundary Type = OUTLET Interface Boundary = Off Location = outlet BOUNDARY CONDITIONS: FLOW REGIME: Option = Subsonic END MASS AND MOMENTUM: Option = Average Static Pressure Pressure Profile Blend = 0.05 Relative Pressure = 0 [Pa] END PRESSURE AVERAGING: Option = Average Over Whole Outlet END END END DOMAIN MODELS: BUOYANCY MODEL: Option = Non Buoyant END DOMAIN MOTION: Option = Stationary END MESH DEFORMATION: Option = None END REFERENCE PRESSURE: Reference Pressure = 1 [atm] END END FLUID DEFINITION: Fluid 1 Material = Air at 25 C Option = Material Library MORPHOLOGY: Option = Continuous Fluid END END FLUID MODELS: COMBUSTION MODEL: Option = None END HEAT TRANSFER MODEL: Option = Thermal Energy END THERMAL RADIATION MODEL: Option = None END TURBULENCE MODEL: Option = k epsilon END TURBULENT WALL FUNCTIONS: Option = Scalable END END INITIALISATION: Option = Automatic INITIAL CONDITIONS: Velocity Type = Cartesian CARTESIAN VELOCITY COMPONENTS: Option = Automatic END STATIC PRESSURE: Option = Automatic END TEMPERATURE: Option = Automatic END TURBULENCE INITIAL CONDITIONS: Option = k and Epsilon EPSILON: Option = Automatic END K: Option = Automatic END END END END END OUTPUT CONTROL: RESULTS: File Compression Level = Default Option = Standard END END SOLUTION UNITS: Angle Units = [rad] Length Units = [m] Mass Units = [kg] Solid Angle Units = [sr] Temperature Units = [K] Time Units = [s] END SOLVER CONTROL: Turbulence Numerics = First Order ADVECTION SCHEME: Option = High Resolution END CONVERGENCE CONTROL: Maximum Number of Coefficient Loops = 3 Minimum Number of Coefficient Loops = 1 Timescale Control = Coefficient Loops END CONVERGENCE CRITERIA: Residual Target = 1.E-4 Residual Type = RMS END TRANSIENT SCHEME: Option = Second Order Backward Euler TIMESTEP INITIALISATION: Option = Automatic END END END END " Thank you very much!

 September 30, 2010, 02:53 #11 Senior Member   Lance Join Date: Mar 2009 Posts: 595 Rep Power: 12 I dont see how your post is related to CFX Macros, please dont hijack other (unrelated) threads! It seems that you will need to do a bunch of tutorials on transient simulations, with the current settings you will do 500[s]/1e-005 [s] = 50 million time steps.

 March 14, 2012, 11:22 #12 Member   Join Date: Jan 2012 Posts: 36 Rep Power: 6 Hi, I have the same question as alac1407 at first. I set Expression: Boundary X Velocity sin(x)*cos(y)*exp(-2*t) and the system showed the same error message as alac1407's to me. After I changed my Expression: Boundary X Velocity sin(x[m])*cos(y[m])*exp(-2*t) and the system showed me another error message: Bad expression value 'Boundary X Velocity' detected in parameter 'U' in object '/FLOW:Flow Analysis 1/DOMAINefault Domain/BOUNDARY:Outlet1/BOUNDARY CONDITIONS/MASS AND MOMENTUM'. CEL error: Error at position 6. Units ([m]) are associated with a term that is not dimensionless. I have no idea how I could revise my expression here. Could anyone help me out? Thank you.

March 14, 2012, 11:28
#13
Senior Member

Lance
Join Date: Mar 2009
Posts: 595
Rep Power: 12

Quote:
 Originally Posted by Lance Make the sin function dimensionless: sin(n*pi*t/30[s]), otherwise the argument dimension will resolve to [s] instead of [rad], just as the error message says.
sin(x[m]) has dimension [m] in the argument. Make it dimensionless.

Also, I believe that you have put the name of the expression in the input box in cfx-pre. See the tutorials on how to create expressions.

 March 14, 2012, 11:53 #14 Member   Join Date: Jan 2012 Posts: 36 Rep Power: 6 Dear Lance, When I use Boundary X Velocity sin(x)*cos(y)*exp(-2*t), I got the error message: Bad expression value 'Boundary X Velocity' detected in parameter 'U' in object '/FLOW:Flow Analysis 1/DOMAINefault Domain/BOUNDARY:Outlet1/BOUNDARY CONDITIONS/MASS AND MOMENTUM'. CEL error: The dimensions of the argument to function 'sin' are inconsistent with expected dimensions. Argument dimensions resolve to 'm'; expected 'rad'. I am new to CFX so I am sorry to ask these stupid questions. I do not understand about what you said:have put the name of the expression in the input box in cfx-pre. Do you think I use the wrong way to create expressions? Thank you for the response

March 14, 2012, 11:56
#15
Senior Member

Lance
Join Date: Mar 2009
Posts: 595
Rep Power: 12
Quote:
 Originally Posted by cuteapathy Dear Lance, When I use Boundary X Velocity sin(x)*cos(y)*exp(-2*t), I got the error message: Bad expression value 'Boundary X Velocity' detected in parameter 'U' in object '/FLOW:Flow Analysis 1/DOMAINefault Domain/BOUNDARY:Outlet1/BOUNDARY CONDITIONS/MASS AND MOMENTUM'. CEL error: The dimensions of the argument to function 'sin' are inconsistent with expected dimensions. Argument dimensions resolve to 'm'; expected 'rad'. I am new to CFX so I am sorry to ask these stupid questions. I do not understand about what you said:have put the name of the expression in the input box in cfx-pre. Do you think I use the wrong way to create expressions? Thank you for the response
I might have misunderstood how you enter your expression, but have you even tried to make the arguments dimensionless?
sin(x/1[m]) and so on?

 March 14, 2012, 12:12 #16 Member   Join Date: Jan 2012 Posts: 36 Rep Power: 6 Dear Lane, It did not show the error message when I changed it to sin(x/1[m]). Another error message showed up: Expression resolves to invalid units ('dimensionless') in value set for parameter 'Relative Pressure' in object '/FLOW:Flow Analysis 1/DOMAINefault Domain/BOUNDARY:Inlet1/BOUNDARY CONDITIONS/MASS AND MOMENTUM'. Expected units: 'kg m^-1 s^-2'. Does this mean I need to give the units to my expressions? Thank you

 March 14, 2012, 12:17 #17 Senior Member   Lance Join Date: Mar 2009 Posts: 595 Rep Power: 12 Well, if the solver wants an expression that has a unit, you better give it one, dont you think? The solver have no way of knowing if you want your expression to be in [Pa], [Bar], [Psi], or [mmHg], etc. I strongly suggest to do a bunch of tutorials.

 March 15, 2012, 02:39 #18 Member   Join Date: Jan 2012 Posts: 36 Rep Power: 6 Dear Lance, Thank you for your response. I will check the tutorials. I appreciate your help.

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post jeff_F CFX 0 August 17, 2009 21:25 aditya CFX 1 July 6, 2008 12:09 Tran CFX 0 September 17, 2007 21:00 Vadim Baines-Jones CFX 2 August 28, 2007 09:14 pantangi goud CFX 2 August 24, 2005 16:42

All times are GMT -4. The time now is 02:01.