UDF to modify under-relaxation factor
Client wants to set URF for temperature at iteration 0 to 0.9 and gradually increase it to 1.0 over a set number of iterations.
The following UDF does this. You must set function hooks for the adjust and init functions, and you need to add an execute-command statement. Instructions are in the source code. /* UDF to linearly scale the temperuatre relaxation factor by the iteration number.... You must hook the ADJUST and INIT functions through th Define->Function Hooks panel. This UDF is used in conjunction with a TUI COMMAND: (rpsetvar 'temperature/relax (%rp-var-value 'temperature/relax)) This updates FLUENT's copy of temperature/relax from the value cached to the user-defined function Add this command to Solve->Execute Commands and put it into the "command" text box by William Wangard, Ph.D. FLUENT does not guarantee any UDFs supplied through regular technical support. */ #include "udf.h" void init_counter(void); /* Global iteration counter */ static real iter = 0.; /* Function to set the counter to zero */ void init_counter(void) { iter = 0.0; } /* Automatically called when you click Solve->Initialize-Initialize */ DEFINE_INIT(init,d) { init_counter(); } /* Automaticlly called at the beginning of each iteration */ DEFINE_ADJUST(adjust, d) { real a, imax, b, urf; /* a = urf at first iteration b = urf at end if imax iterations or urf = a + i/imax * (b-a) */ a = 0.9; b = 1.0; imax = 50.0; if (first_iteration) init_counter(); else iter++; /* Assume URF = a + i/imax * b */ if (iter > imax) urf = 1.0; else urf = a + (iter/imax) * (b-a); /* Message("iteration = %f urf = %fn", iter, urf); */ /* Set the RPVAR */ RP_Set_Real("temperature/relax", urf); } |
||
![]()
|