CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   looping over selected / marked cells (https://www.cfd-online.com/Forums/fluent-udf/109630-looping-over-selected-marked-cells.html)

Jonathan November 22, 2012 04:59

looping over selected / marked cells
 
Hi everyone,

just wondering if anyone can help me with this query:

i would like to loop over a set of cells adjacent to a wall boundary - say the next 5 cells next to the wall, or if that is not possible, over a set of cells marked using the adaptation menu and some metric (say mesh iso-value).

so far i only know about looping over the whole domain and looping over various threads, which typically only include (a single layer of) wall adjacent cells.

basically, i have an expression in a UDF which i want to integrate over a finite number of cells adjacent to the wall.

many thanks and best regards in advance
jon

Code:

/*
 ============================================================================
 Name        : entropy_generation.c
 Author      : Jonathan Bergh
 Version    :
 Copyright  : Copyright J Bergh 2012
 Description : Ansys Fluent UDF to calculate entropy in C, Ansi-style
 ============================================================================
 */
#include "udf.h"
#include "mem.h"

DEFINE_EXECUTE_AT_END(entropy_gen)
{
        Domain *d;
        Thread *t;

        real S_gen_tot;
        real S_gen_v;
        real S_gen_t;
        cell_t c;

        d = Get_Domain(1);
        thread_loop_c(t,d)
        {
                begin_c_loop(c,t)
                        {
                                real temperature = C_T(c,t);
                               
                                real c_d;

                                real dTdx = C_T_RG(c,t)[0];
                                real dTdy = C_T_RG(c,t)[1];
                                real dTdz = C_T_RG(c,t)[2];
                               
                                real dudx = C_DUDX(c,t);
                                real dudy = C_DUDY(c,t);
                                real dudz = C_DUDZ(c,t);
                               
                                real dvdx = C_DVDX(c,t);
                                real dvdy = C_DVDY(c,t);
                                real dvdz = C_DVDZ(c,t);
                               
                                real dwdx = C_DWDX(c,t);
                                real dwdy = C_DWDY(c,t);
                                real dwdz = C_DWDZ(c,t);
                               
                                real c_k_lam = C_K_L(c,t);
                                real c_mu_lam = C_MU_L(c,t);
                                                               
                                S_gen_t = (c_k_lam/(temperature*temperature))*((dTdx)*(dTdx) + (dTdy)*(dTdy) + (dTdz)*(dTdz));

                                S_gen_v = (c_mu_lam/temperature)*(2*(dudx*dudx + dvdy*dvdy + dwdz*dwdz) + (dvdx+dudy)*(dvdx+dudy) + (dwdy + dvdz)*(dwdy + dvdz) + (dudz + dwdx)*(dudz + dwdx));

                                S_gen_tot = S_gen_t + S_gen_v;

                                c_d = S_gen_tot / (1.010073 * (65*65*65) / 0.040 / 300);

                                C_UDMI(c,t,0) = c_d;
                        }
                end_c_loop(c,t)
        }
}



All times are GMT -4. The time now is 07:21.