|
[Sponsors] |
April 11, 2014, 19:58 |
Mass flux as a function of pressure
|
#1 |
New Member
Join Date: Apr 2014
Posts: 3
Rep Power: 12 |
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: 12 |
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: 12 |
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); } |
|
Tags |
mass flux, pressure, udf |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Wind turbine simulation | Saturn | CFX | 60 | July 17, 2024 06:45 |
An error has occurred in cfx5solve: | volo87 | CFX | 5 | June 14, 2013 18:44 |
Water subcooled boiling | Attesz | CFX | 7 | January 5, 2013 04:32 |
Problem setting with chtmultiregionFoam | Antonin | OpenFOAM | 10 | April 24, 2012 10:50 |
Error with Wmake | skabilan | OpenFOAM Installation | 3 | July 28, 2009 01:35 |