# Mass flux as a function of pressure

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

 April 11, 2014, 19:58 Mass flux as a function of pressure #1 New Member   Join Date: Apr 2014 Posts: 3 Rep Power: 10 Hi everyone! This is my first time posting on here but I'm no newbie to the CFDO forums. I've been using Fluent for around 2-3 years mainly for school , and am interested (by curiosity) in learning UDFs. The problem I'm trying to solve is the following: I modeled a classic 2D Laval nozzle, with a straight chamber upstream of the nozzle. In this chamber lies the mass inlet, with a given mass flux rate and initial gauge pressure. In real life, the mass flux of a solid rocket motor will depend on the burn rate of the propellant, who in turn is dependent (primarily) on this chamber pressure. So I'm trying to find a way to have Fluent do two things: - Compute after each converged transient timestep the average absolute pressure in that chamber - Modify the mass flux rate so that MF = a*(PRESSURE^b) Is this possible? If so, how should I do this, through a programmed C UDF or by defining user parameters (or something else)? I'm not really looking for someone to dump a code that I just load into Fluent (though if it is a simple code it won't take me long to decipher it), I'm more interested in learning UDFs for future use. Thanks in advance! Robin

 April 12, 2014, 16:38 #2 New Member   Join Date: Apr 2014 Posts: 3 Rep Power: 10 Okay so I wrote the following UDF to compute the average total pressure, it is compiling and giving a result, can someone please double check that it gives the correct result? Thanks! PS: My mass flux as a function of pressure is for a pressure in psi, Fluent outputting pascals Code: ```#include "udf.h" #define p_op 14.7 /*psi*/ real press; real avg_press; DEFINE_EXECUTE_AT_END(tot_press_comp) { int n=1; Domain *d; cell_t c; Thread *t; face_t f; d = Get_Domain(1); t = Lookup_Thread(d,7); press = 0; avg_press = 0; begin_c_loop(c,t) { press = press+(C_P(c,t)*0.000145037738); n=n+1; } end_c_loop(c,t) avg_press=(press/n)+p_op; printf("average total pressure in psi = %g\n", avg_press); }```

 April 13, 2014, 14:15 #3 New Member   Join Date: Apr 2014 Posts: 3 Rep Power: 10 I seem to have figured it out! I have some problems though, the code below works, but the only way I managed to make the pressure computation work was by inserting the code contained in DEFINE_EXECUTE_AT_END inside the DEFINE_PROFILE code. Apparently this computes the average pressure each iteration and not at the end of each timestep, which I'm afraid might give me convergence issues. From the code below, how can I change to have it: - Compute the average pressure at the end of each time step - Use that average pressure to compute the corresponding flux and modifying the inlet's flux Thanks! Code: ```#include "udf.h" #define p_op 14.7 /*psi*/ real press; real avg_press; real flux; /*-------------------------------------------- CODE TO COMPUTE THE AVERAGE PRESSURE FOR SOME REASON NOT RUN AFTER EACH TIME STEP ---------------------------------------------*/ DEFINE_EXECUTE_AT_END(tot_press_comp) { int n=1; Domain *d; cell_t c; Thread *t; face_t f; d = Get_Domain(1); t = Lookup_Thread(d,7); press = 0; avg_press = 0; flux = 0; begin_c_loop(c,t) { press = press+(C_P(c,t)*0.000145037738); n=n+1; } end_c_loop(c,t) avg_press=(press/n)+p_op; flux = 1.4929*pow(avg_press,0.3483); printf("average total pressure in psi = %g\n", avg_press); } /*------------------------------------ CODE TO CHANGE MASS FLUX -------------------------------------*/ DEFINE_PROFILE(inlet_mf,th,i) { face_t f; /* GET THE CHAMBER PRESSURE */ int n=1; Domain *d; cell_t c; Thread *t; d = Get_Domain(1); t = Lookup_Thread(d,7); press = 0; avg_press = 0; flux = 0; begin_c_loop(c,t) { press = press+(C_P(c,t)*0.000145037738); n=n+1; } end_c_loop(c,t) avg_press=(press/n)+p_op; flux = 1.4929*pow(avg_press,0.3483); /* APPLY THE NEW FLUX */ begin_f_loop(f,th) { F_PROFILE(f,th,i) = flux; } end_f_loop(f,th) printf("Internal chamber pressure = %g\n", avg_press); printf("Adjusted mass flux = %g\n", flux); }``` mrwan and alelager like this.

 Tags mass flux, pressure, udf